движущиеся файлы recurisively на Linux

find ./dir -type f -iname "*.t[argz]*[bz2]" -print | xargs mv --target-directory=dir кажется, перестал работать на файле, который имеет пробелы на имя. как улучшить его? или альтернатива?

благодарит ответ ниже: мой mv не поддерживает - пустой указатель или-0, я использую cygwin:

$ mv --help
Usage: mv [OPTION]... [-T] SOURCE DEST
  or:  mv [OPTION]... SOURCE... DIRECTORY
  or:  mv [OPTION]... -t DIRECTORY SOURCE...
Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.

Mandatory arguments t
.

5
задан user217631 7 January 2010 в 19:22
поделиться

3 ответа

Используйте опцию -print0 вместо -print в команде find, а опцию xargs -0 (или --null) - тогда в качестве разделителей будут использоваться NULы, а не новые строки и пробелы.

find ./dir -type f -iname "*.t[argz]*[bz2]" -print0 | xargs --null mv --target-directory=dir
8
ответ дан 14 December 2019 в 04:39
поделиться

Вы посмотрели на опцию -exec для поиска?

find ./dir -type f -iname "*.t[argz][bz2]" -exec mv {} --target-directory=dir ';' 

Опция -exec будет выполнять любые опции, следующие за ней в качестве команды, до тех пор, пока не увидит полустолбцы, обернутые в кавычки. Таким образом, вам не придется решать проблему с интервалом.

0
ответ дан 14 December 2019 в 04:39
поделиться

GNU find

find ./dir -type f -iname "*.t[argz]*[bz2]" -exec mv "{}" /destination +;
0
ответ дан 14 December 2019 в 04:39
поделиться
Другие вопросы по тегам:

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