1

Тема: bash переміщення декількох файлів з різним розширенням

Доброго дня, в заголовку все написано, як перемістити наприклад з директорії документи форматів pdf docx odt в директорію "Завантаження" єсть команда типу mv *.[pdf, docx] /home/user/ але відчуваю що я її не так згадав бо не працює

2 Востаннє редагувалося Vo_Vik (13.05.2020 13:11:19)

Re: bash переміщення декількох файлів з різним розширенням

Я би, по перше, в лапки взяв, якщо в назві файла пробіли ставите чи щось таке.

Подякували: Zolin_777, leofun012

3

Re: bash переміщення декількох файлів з різним розширенням

Подруге, якщо не працює, то в чому проблема мати 2 команди?

Подякували: Zolin_7771

4

Re: bash переміщення декількох файлів з різним розширенням

По третє, попробуйте
mv *.pdf *.docx /home/user/

Подякували: Zolin_777, koala2

5

Re: bash переміщення декількох файлів з різним розширенням

Варіант 4
mv *.{pdf,docx} /home/user/

А взагалі, що це за баш? Точно під *nix?

Подякували: Zolin_777, leofun01, HetmanNet3

6

Re: bash переміщення декількох файлів з різним розширенням

Vo_Vik написав:

Варіант 4
mv *.{pdf,docx} /home/user/

А взагалі, що це за баш? Точно під *nix?

Дякую, так це баш, сортування файлів у системі роблю

7

Re: bash переміщення декількох файлів з різним розширенням

По-перше, гадаю, ви неправильно сприймаєте принцип роботи командної оболонки.
Команда

mv *.* /home/user/

буде оброблена оболонкою (bash), і mv отримає замість *.* список всіх файлів, що задовільняють виразу *.*. Якщо таких файлів 2, скажімо, 1.pdf та 2.docx, то з боку mv ця команда і

mv 1.pdf 2.docx /home/user/

виглядатимуть практично однаково (насправді доступ до оригінальної команди також є, але їм мало хто користується).
Тепер - про знаки. * - будь-яка послідовність знаків; ? - один будь-який знак; [список] - один будь-який зі списку. Список може бути через - ([0-9] - та саме що [0123456789]) і з виключенням ([^a-z] - те, все крім маленьких літер від a до z).
Тобто ваш запис означає "що завгодно, після чого крапка і один з символів [pdf, docx]. наприклад, такі імена підходять:

Zolin_777.c
someone111.f
WOW.,

А вам треба все, що закінчується на docx, pdf і odt треба? Ну так і пишіть:

 mv *.pdf *.docx *.odt /home/user/

Bash розгорне це в список.

Подякували: leofun011

8 Востаннє редагувалося Zolin_777 (13.05.2020 13:35:28)

Re: bash переміщення декількох файлів з різним розширенням

koala написав:

По-перше, гадаю, ви неправильно сприймаєте принцип роботи командної оболонки.
Команда

mv *.* /home/user/

буде оброблена оболонкою (bash), і mv отримає замість *.* список всіх файлів, що задовільняють виразу *.*. Якщо таких файлів 2, скажімо, 1.pdf та 2.docx, то з боку mv ця команда і

mv 1.pdf 2.docx /home/user/

виглядатимуть практично однаково (насправді доступ до оригінальної команди також є, але їм мало хто користується).
Тепер - про знаки. * - будь-яка послідовність знаків; ? - один будь-який знак; [список] - один будь-який зі списку. Список може бути через - ([0-9] - та саме що [0123456789]) і з виключенням ([^a-z] - те, все крім маленьких літер від a до z).
Тобто ваш запис означає "що завгодно, після чого крапка і один з символів [pdf, docx]. наприклад, такі імена підходять:

Zolin_777.c
someone111.f
WOW.,

А вам треба все, що закінчується на docx, pdf і odt треба? Ну так і пишіть:

 mv *.pdf *.docx *.odt /home/user/

Bash розгорне це в список.

#Файли документів
mv ~/$DownloadsUK/*.{odt,ods,txt,doc,xls,docx,doc,pdf} ~/$DocumentsUK

#Файли Картинок
mv ~/$DownloadsUK/*.jpg *.png *.jpeg *.tif ~/$ImagesUK

якщо так робити то документи сортує правильно, а от картинки ні....
Я зрозумів сенс що треба в директорію переходити спочатку, але мені зручніше через {}

Подякували: bebyk1

9

Re: bash переміщення декількох файлів з різним розширенням

Zolin_777 написав:
koala написав:

По-перше, гадаю, ви неправильно сприймаєте принцип роботи командної оболонки.
Команда

mv *.* /home/user/

буде оброблена оболонкою (bash), і mv отримає замість *.* список всіх файлів, що задовільняють виразу *.*. Якщо таких файлів 2, скажімо, 1.pdf та 2.docx, то з боку mv ця команда і

mv 1.pdf 2.docx /home/user/

виглядатимуть практично однаково (насправді доступ до оригінальної команди також є, але їм мало хто користується).
Тепер - про знаки. * - будь-яка послідовність знаків; ? - один будь-який знак; [список] - один будь-який зі списку. Список може бути через - ([0-9] - та саме що [0123456789]) і з виключенням ([^a-z] - те, все крім маленьких літер від a до z).
Тобто ваш запис означає "що завгодно, після чого крапка і один з символів [pdf, docx]. наприклад, такі імена підходять:

Zolin_777.c
someone111.f
WOW.,

А вам треба все, що закінчується на docx, pdf і odt треба? Ну так і пишіть:

 mv *.pdf *.docx *.odt /home/user/

Bash розгорне це в список.

#Файли документів
mv ~/$DownloadsUK/*.{odt,ods,txt,doc,xls,docx,doc,pdf} ~/$DocumentsUK

#Файли Картинок
mv ~/$DownloadsUK/*.jpg *.png *.jpeg *.tif ~/$ImagesUK

якщо так робити то документи сортує правильно, а от картинки ні....
Я зрозумів сенс що треба в директорію переходити спочатку, але мені зручніше через {}

Теж гадаю, що з curly braces зручніше й практичніше. І коротше (менше писати). Ви в ОП-пості лише переплутали кучеряві дужки з квадратними + пробіли не треба.

Прихований текст

Так, я бачив 4 варіант Вовіка, просто дивно, що стільки повідомлень ні про що, поки не дійшли до суті.

Подякували: leofun011

10

Re: bash переміщення декількох файлів з різним розширенням

Bebyk, коли я починав відповідати, то ще не знав відповіді.

11

Re: bash переміщення декількох файлів з різним розширенням

Vo_Vik написав:

Bebyk, коли я починав відповідати, то ще не знав відповіді.

Ну, можна спершу подумати, а потім відповідати, — як варіант. :)