Обратите внимание, что вопрос предполагает желание обрабатывать только file_*файлы в текущем каталоге, в то время как find(без дополнительных опций) будет выполняться поиск по всему дереву каталогов в текущем каталоге.
Скотт
1
Да, верно. Добавьте, -maxdepth 0чтобы предотвратить это.
«лучше» субъективно. Более мощный, более сложный и медленный; и хотя mvне имеет значения, обрабатываете ли вы файлы вместе или по отдельности, некоторые другие возможности могут.
Амадан
Отредактировано (добавлено -maxdepth 0)
8
Используйте -t "указать целевой каталог" на mv, он должен работать при перемещении файлов * в каталог назначения / temp
xargs -n10
например)Ответы:
На OS X:
В Linux:
источник
/
в конце необязательно. Вы можете включить его, если хотите, но это не обязательно.-i
(или-J
) укажите токен, который будет заменен входящими аргументами, а не просто прикреплен к концу.man xargs
-i{}
, без пробела. Или сказать-I {}
.-i
, он заменяется.ls file_* | xargs -iFOO mv FOO temp/
работает точно так же.find . -name "file_*" -maxdepth 0 -exec mv {} temp/ \;
find
лучше, чемls
там, где может быть больше файлов, чем количество аргументов программы, разрешенных вашей оболочкой.источник
file_*
файлы в текущем каталоге, в то время какfind
(без дополнительных опций) будет выполняться поиск по всему дереву каталогов в текущем каталоге.-maxdepth 0
чтобы предотвратить это.mv
не имеет значения, обрабатываете ли вы файлы вместе или по отдельности, некоторые другие возможности могут.-maxdepth 0
)Используйте -t "указать целевой каталог" на mv, он должен работать при перемещении файлов * в каталог назначения / temp
например: - #ls -l file * | xargs mv -t / temp
источник
В соответствии с предложением @ user1953864: {
-i
,-J
} укажите токен, который будет заменен входящими аргументами.Например
ls
:Затем переместить все файлы Java в папку someDirectory с помощью
xargs
следующего:В линуксе
На MacOS
источник
Другое решение может быть:
Недостатком является то, что он создает новый
mv
процесс для каждого файла.источник