[英]find and copy from filelist with spaces in it
我有一个由换行符分隔的pdf文件列表。 (文件名包含很多空格...)
如果我做
cat file.list
外壳显示出一些乱码
文件名.pdfpdf8.pdf
就是这样。
我想找到每个行文件并将其复制到一个目录(Desktop / someFolder)。
如果您的数据有效(请参阅Kamil的评论),则类似以下的小脚本可以完成您想要的工作。 关于您提到的“换行符”,我只想提到Linux / MacOS / BSD系统使用\\n
而Windows使用\\r\\n
。 因此,我建议您按照Kamil在注释中的建议进行hexdump -C file.list
,然后您应该查看是否有必要在使用脚本或调整字段分隔符之前进行一些替换(默认为换行,空格,制表符)。
注意: find .
该命令将在当前目录( .
)中进行搜索,因此,除非您要在file.list
中列出的所有文件都位于当前目录中/之下,否则您可能希望/需要对其进行更改。
#! /bin/bash
dir="$HOME/Desktop/someFolder"
if [ ! -e "$dir" ]; then
mkdir "$dir"
fi
while read -r ; do
name=$(find . -name "$REPLY")
cp -v "$name" "$dir"
done < file.list
这是一个满足您需求的管道:
cat file.list | tr '\n' '\0' | xargs -0 -I{} cp {} Desktop/someFolder
cat
会将文件列表发送到的标准输入 tr
会将换行符转换为null并将其发送到 xargs
需要空分隔的参数( -0
),并将每个参数发送到 cp
,最后将它们复制到目标文件夹。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.