2013-12-26 3 views
1

У меня есть каталог, который содержит несколько файлов с пробелами в их именах. Я хочу найти шаблон в названии, и этот файл будет перемещен в другой каталог. Теперь проблема заключается в том, что когда конкретный шаблон найден в одном имени файла, этот файл перемещается к пути назначения, но при наличии нескольких файлов этот метод терпит неудачу. Ниже приведен код, который я использую:Перемещение нескольких файлов с пробелами в имени (Linux)

for file in `find . -maxdepth 1 -name "*$pattern*xlsx" -type f` 
do 
mv "$file" $destination/ 
done 

ответ

4

Нет необходимости использовать цикл:

find . -maxdepth 1 -name "*$pattern*xlsx" -type f -exec mv {} $destination + 
0

работает нормально с следующим кодом

find . -maxdepth 1 -name "*$pattern*xlsx" -type f -print0 | xargs -I{} -0 mv {} "$destination/" 
+0

Боюсь, ваше решение больше , более сложный, менее портативный (использует расширения POSIX 'find' и' xargs') и (немного) менее эффективны, чем использование 'find' в одиночку. – jlliagre

Смежные вопросы