Найти файлы и сгруппировать в каталоги

336
seanbw

У меня есть папка и подпапки и огромное количество файлов следующим образом:

Folder called Movies Sub Folder called "009 - A bad Wolf" Files called " 009 A bad Wolf.avi" Files called " 009 A bad Wolf.txt" Files called " 009 - A bad Wold.nfo" Sub folder A damn Good Film Files > A Very good Film .mp4 Files > A very good Film .nfo Files > A Very good Film.txt Files > American Babe -Estelle Feat Kan Wass.mkv Files > American Babe -Estelle Feat Kan Wass.nfo Files > American Babe -Estelle Feat Kan Wass-poster.jpg Files > American.History.X.1998.Bluray.1080p.DTS-HD-7.1.x264-Grym Sub Folder > Baste - taste . . Files > Baa Baa Sheep.ogg Files > Baa Baa Sheep.nfo Files > Baa Baa Sheep.txt . . Files > Saa Baa Sheep.mp3 Files > Saa Baa Sheep.nfo . Files > Zaa Baa Sheep.flv Files > Zaa Baa Sheep-poster.jpg Files > Zaa Baa Sheep.nfo Files > Zaa Baa Sheep.txt 

Как я могу получить каждый подобный набор файлов в отдельных каталогах, не проходя один за другим? В подпапке 1075 файлов и вложенных папок, в основной папке 6 файлов + подпапка, в которой я полностью не разбираюсь. Я знаю, что должен использовать find и exec, но как создать каталог с соответствующими именами? т.е. должно быть так:

Folder > Movies Sub Folder > 009 - A bad Wolf with the following files in this sub folder:  Files > 009 - A bad Wolf.avi Files > 009 - A bad Wolf.txt Files > 009 - A bad Wold.nfo Sub folder > A damn Good Film with all the files of same name in this sub folder Sub Folder > A Very good Film with all these files in this sub folder : Files > A Very good Film .mp4 Files > A very good Film .nfo Files > A Very good Film.txt Sub Folder > American Babe -Estelle Feat Kan Wass with all these files of same name in this sub folder: Files > American Babe -Estelle Feat Kan Wass.mkv Files > American Babe -Estelle Feat Kan Wass.nfo Files > American Babe -Estelle Feat Kan Wass-poster.jpg Sub Folder > American.History.X.1998.Bluray.1080p.DTS-HD with files of same name in this sub folder: Files > American.History.X.1998.Bluray.1080p.DTS-HD-7.1.x264-Grym Sub Folder > Baste - taste as above with files of same names in this sub folder . . Sub Folder > Baa Baa Sheep with files of same name in this sub folder: Files > Baa Baa Sheep.ogg Files > Baa Baa Sheep.nfo Files > Baa Baa Sheep.txt . Sub Folder > Saa Baa Sheep with files of same name in this sub folder: Files > Saa Baa Sheep.mp3 Files > Saa Baa Sheep.nfo . Sub Folder > Zaa Baa Sheep with files of same name in this sub folder: Files > Zaa Baa Sheep.flv Files > Zaa Baa Sheep-poster.jpg Files > Zaa Baa Sheep.nfo Files > Zaa Baa Sheep.txt 
2
Если решение, которое я представил, сработает, пожалуйста, «примите решение», чтобы кто-нибудь знал, что теперь оно решено для вас. ejbytes 8 лет назад 0
@ejbytes: Спасибо за предложенное решение, но оно не будет работать, так как это полуручное решение, которое требует от меня прохождения и идентификации файлов вручную. Что мне нужно, это сценарий, который проходит и группирует эти файлы вместе. В большинстве решений я видел группу, основанную на расширениях, но мне нужны группировки, основанные на именах, и для меня непростой задачей является создание нового подкаталога на основе имени сгруппированных файлов. seanbw 8 лет назад 0
Вы понимаете термин «подстановочный знак» в этом смысле? Например, «я люблю кошек», «кошки красивые», «мои кошки». Подстановочный знак - звездочка *. Вы можете использовать это так, * кошки, * кошки *, кошки *. Руководство да, потому что вы должны разработать алгоритм. Обойти это невозможно. То, что вы ищете, это «ad-hok», что означает уникальность вашей ситуации, поэтому вам придется приложить некоторые усилия. Никто не будет делать вашу работу. Мы можем помочь вам найти путь или помочь в областях, в которых вы боретесь. ejbytes 8 лет назад 0
Я не против работы. Дело в том, что количество файлов и папок настолько велико, что мне никогда не удавалось использовать Nautilus для открытия самой папки. Все мои попытки открыть папку taht, чтобы увидеть список файлов, просто остановили smy pc. вот почему я начал искать сценарий решения. Частично проблема заключается в том, что я не могу использовать команду find для вывода списка файлов с различными расширениями, но есть ли команда для поиска "тех же имен"? seanbw 8 лет назад 0
«код» найти. \ (-name "* .mp4" -o -name ".avi" -o -name ".mkv" \) '/ code' находит различные расширения, но как "найти" совокупность одинаковых имен? Я еще не встречал такой сценарий онлайн seanbw 8 лет назад 0

1 ответ на вопрос

1
ejbytes

Это довольно легко выполнить эту задачу, и я использую этот метод все время.

Перейдите к соответствующему каталогу. Нажмите SHIFT + щелчок правой кнопкой мыши (в пустом разделе папки). Выберите «Открыть окно команд прямо здесь». Сеанс терминала откроется в этом каталоге.

Пока вы находитесь в этом каталоге, вы можете создать нужные вам подпапки, используя Windows, новую папку и т. Д. Или вы можете использовать команды:


Создать каталог (создать папку) > mkdir foldername
Переместить все расширения файлов в новую подпапку (например, все файлы flv)
> mv * .flv ./foldername

Если вы хотите переместить файлы с похожими заголовками, используйте команду следующим образом: * (звездочка) - это дикий символ. Кавычки держат строку в такте, удерживая пробелы; в противном случае пропуски пропускаются.

> mkdir "baa black sheep"
> mv "baa black" *. * ./"baa black sheep "

Выше:
mv = move
"baa black" * = начинается с "baa black" + * (любая строка после)
./ = этот каталог
./foldername = папка в этом каталоге с именем foldername

mv "baa black" *. * ./"baa black sheep "= переместить все файлы, которые начинаются со строки« ball black », и переместить ее в каталог« baa black sheep »

enter image description here


enter image description here

Изображения выше должны помочь вам понять эту концепцию, если вы впервые работаете с интерфейсом командной строки.


К вашему сведению: это хорошая идея, чтобы ваши имена файлов были короткими и без пробелов, а также каталогов. Я бы порекомендовал также изучить «Команды Windows DOS», чтобы узнать некоторые приемы.

Это решение займет так много времени, что я не могу запустить его. Простая команда mv -fv * для перемещения этой конкретной папки заняла два дня. Я боюсь даже попробовать это - фактически каждый раз, когда я пытался использовать Nautilus, чтобы открыть папку, я всегда заканчивал тем, что закрывал ее, потому что она забирает всю мою память и тормозит компьютер настолько, что я вынужден признать поражение и закрыть его. Только скрипт поможет. Спасибо, в любом случае. seanbw 8 лет назад 0
Вы не хотите использовать mv * в вашем случае. mv * означает переместить все. Это не то, что вы хотите. Изучите решение чуть ближе, вы не понимаете идею использования диких символов. * = все, * х означает это до х, до х. х * означает х и все после х; выступая в «СТРУНАХ». ejbytes 8 лет назад 0
Если это сценарий или сценарий оболочки, то вам придется написать этот сценарий самостоятельно и указать параметры и исполнение. Стиль этой простой команды используется в сценариях оболочки. Возможно, вы захотите немного почитать и поучиться, если вы не знакомы. ejbytes 8 лет назад 0
Это был первоначальный запрос. Может быть, вы должны перечитать вопрос? seanbw 8 лет назад 0

Похожие вопросы