【问题标题】:How to use XARGS to copy file list from CSV or TEXT file?如何使用 XARGS 从 CSV 或 TEXT 文件中复制文件列表?
【发布时间】:2020-03-04 20:23:48
【问题描述】:

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

在 macOS 上运行

文件夹内容:
图片(文件夹)
img_1.jpg
img_2.jpg
img_3.jpg
img_4.jpg
img_5.jpg
文件.csv
文件.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 复制到 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.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

【问题讨论】:

标签: csv terminal xargs


【解决方案1】:

您的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/

【讨论】:

    猜你喜欢
    • 2013-07-13
    • 1970-01-01
    • 2017-01-13
    • 2015-04-23
    • 2012-05-13
    • 2016-02-14
    • 1970-01-01
    • 2015-11-10
    • 2022-01-04
    相关资源
    最近更新 更多