当我运行以下命令时:
> mkdir some_dir
> find /foo/bar/ -name '*.csv' -print0 | xargs -0 mv {} some_dir
我收到数百行这样说:
mv: target `/foo/bar/XX.csv` is not a directory
为什么?我以为xargs会执行:
mv /foo/barXX.csv some_dir
对于find
找到的每个文件。这是怎么回事?顺便说一下,这是zsh
更新:
更新1:
我试过了:
find /foo/bar/ -name '*.csv' -print0 | xargs -0 mv {} -t some_dir
但是然后我得到了几行像:
mv: cannot stat `{}': No such file or directory
尽管我认为该命令可以正确移动我的文件。
更新2:
单独-t
使用时,我似乎不需要该选项mv
。例如
> touch file1.txt
> touch file2.txt
> mkdir my_dir
> mv file1.txt file2.txt my_dir
效果很好。为什么-t
在使用时需要xargs
?