如何使用XARGS从CSV或TEXT文件复制文件列表



我正试图使用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/

最新更新