我正试图使用xargs复制基于csv/txt文件的图像,不幸的是,它只能复制csv/txt文件的最后一行。
在macOS 上运行
文件夹内容:
图像
file.csv内容:
img_1.jpg
immg_2.jpg
img_3.jpg
file.txt内容:
img_1.jpg
immg_2.jpg
img_3.jpg
已尝试:$ cat file.csv | xargs -t -I [] find . -type f -name "[]*" -exec cp {} images/ ;
$ cat file.csv | xargs -t -I % cp % images/
$ cat file.csv | xargs -t -I % sh -c 'find . -type f -name %; cp % images/'
目标:
仅复制image_1.jpg、image_2.jpg&image_3.jpg到images文件夹
代码1输出:
$ cat file.csv | xargs -t -I [] find . -type f -name "[]*" -exec cp {} images/ ;
* -exec cp {} images/ ;img_1.jpg
* -exec cp {} images/ ;img_2.jpg
find . -type f -name img_3.jpg* -exec cp {} images/ ;
cp: images/img_3.jpg and ./images/img_3.jpg are identical (not copied).
注意:只有image_3.jpg被复制到images文件夹
代码2输出:
$ cat file.csv | xargs -t -I % cp % images/
images/img_1.jpg
cp: img_1.jpgr: No such file or directory
images/img_2.jpg
cp: img_2.jpgr: No such file or directory
cp img_3.jpg images/
注意:同样,只有image_3.jpg被复制
代码3输出:
$ cat file.csv | xargs -t -I % sh -c 'find . -type f -name %; cp % images/'
images/img_1.img_1.jpg
cp: img_1.jpgr: No such file or directory
images/img_2.jpg img_2.jpg
cp: img_2.jpgr: No such file or directory
sh -c find . -type f -name img_3.jpg; cp img_3.jpg images/
./img_3.jpg
./images/img_3.jpg
注意:同样,只有image_3.jpg被复制
您的file.csv
似乎有rn
行尾(非Unix/Linux操作系统的"text"格式(,而且如果file.csv
有正确的文件路径(当前目录afaics(,则不需要find
。移除r
应足以使其工作(例如通过tr
(:
cat file.csv | tr -d 'r' | xargs -t -I % cp -pvf % images/