私はこれを試していますが、うまくいきません:
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
よりも優れており、シェルで許可されているプログラム引数の数よりも多くのファイルがある場合があります。
Mvで「ターゲットディレクトリを指定」するために使用されます。ファイル*を宛先ディレクトリ/ tempに移動する必要があります。
例:-#ls -l file * | xargs mv -t/temp
@ user1953864によって提案されたとおり:{-i
、-J
}入力引数で置き換えられるトークンを指定します。
たとえば、ls
:
something.Java exampleModel.Java NewsQueryImpl.Java readme someDirectory/
次に、すべてのJavaファイルをsomeDirectoryフォルダにxargs
で移動するには、次のようにします。
Linuxの場合
ls *.Java | xargs -i mv {} someDirectory/
MacOSの場合
ls *.Java | xargs -J mv {} someDirectory
別の解決策は次のとおりです。
for f in file_* ; do
mv $f temp/$f
done
欠点は、ファイルごとに新しいmv
プロセスをforkすることです。