Я пытаюсь это, и это не работает:
ls file_* | xargs mv {} temp/
Есть идеи?
На OS X:
ls file_* | xargs -J {} mv {} temp/
В Linux:
ls file_* | xargs -i {} mv {} temp/
find . -name "file_*" -maxdepth 0 -exec mv {} temp/ \;
команда find
лучше, чем ls
где файлов может быть больше, чем количество аргументов программы, разрешенных вашей оболочкой.
Используйте -t "указать целевую директорию" в mv, она должна работать при перемещении файлов * в каталог назначения /temp
например:- #ls -l file * | xargs mv -t /temp
В соответствии с предложением @ user1953864: { -i
, -J
} укажите токен, который будет заменен входящими аргументами.
Например, ls
:
something.java exampleModel.java NewsQueryImpl.java readme someDirectory/
Затем переместить все Java-файлы в папку someDirectory с помощью xargs
:
В линуксе
ls *.java | xargs -i mv {} someDirectory/
На MacOS
ls *.java | xargs -J mv {} someDirectory
Другое решение может быть:
for f in file_* ; do
mv $f temp/$f
done
Недостатком является то, что он создает новый процесс mv
для каждого файла.