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

我正在尝试使用xargs复制基于csv / txt文件的图像,很遗憾,它只能复制csv / txt文件的最后一行。

在macOS上运行

文件夹内容:
图片(文件夹)
img_1.jpg
img_2.jpg
img_3.jpg
img_4.jpg
img_5.jpg
file.csv
file.txt

file.csv内容:
img_1.jpg
img_2.jpg
img_3.jpg

file.txt内容:
img_1.jpg
img_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复制到图像文件夹

代码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已复制到图像文件夹



代码2输出:

$ cat file.csv | xargs -t -I % cp % images/
images/img_1.jpg cp: img_1.jpg\r: No such file or directory images/img_2.jpg cp: img_2.jpg\r: 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.jpg\r: No such file or directory images/img_2.jpg img_2.jpg cp: img_2.jpg\r: 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

hcmove 回答:如何使用XARGS从CSV或TEXT文件复制文件列表?

您的file.csv似乎有\r\n行的结尾(非Unix / Linux OS-es的“文本”格式),即使file.csv的文件路径正确(当前目录afaics),则无需使用find。 删除\r应该足以使其正常工作(例如通过tr):

cat file.csv | tr -d '\r' | xargs -t -I % cp -pvf % images/
本文链接:https://www.f2er.com/3139495.html

大家都在问