2009-04-22 3 views
7

Я хочу, чтобы переместить все файлы, соответствующие определенному шаблону, в текущий каталог в другой каталог.Перемещение файлов в каталог

Например, как бы я переместил все файлы, начинающиеся с nz, в каталог с именем foobar? Я попытался использовать mv для этого, но это не сработало.

+1

Как писать сценарий bash, чтобы сделать это не связанным с программированием? – RobS

+0

Как писать сценарий bash, необходимый для решения его проблемы? – 2009-04-22 08:35:37

+0

вам не нужен скрипт bash для этого ... не связанный с программированием – Shree

ответ

8
find . | grep "your_pattern" | xargs mv destination_directory 

ли следующее:

  • находит все файлы в текущем каталоге
  • фильтрует их в соответствии с вашим рисунком
  • Перемещает все полученные файлы целевой каталог
+0

Не печатайте имена файлов grep. Особенно не с find (1): он имеет -name. Также не используйте xargs без -0. Особенно не с find (1): он имеет -exec. – lhunath

+0

За исключением того факта, что find может искать имена, что может пойти не так с grepping filenames? –

1

Это будет сделано, хотя если у вас есть каталоги, начинающиеся с nz, это тоже переместит их.

for files in nz* 
do 
mv $files foobar 
done 

Редактировать: Как показано выше, это полностью поверх. Тем не менее, более сложная картина матчей вы можете сделать что-то вроде:

for files in `ls | grep [regexp]` 
do 
mv $files foobar 
done 
1

Попробуйте использовать «mmv», который установлен на большинстве дистрибутивов Linux.

0

mv nz* foobar/

  • мв - будет переместить или переименовать файл
  • новозеландских - получите все элементы, которые начинаются с «новозеландских»
  • Foobar/ - это каталог, в котором все предметы войдут в
Смежные вопросы