繁体   English   中英

从文件列表中查找并复制带有空格的文件

[英]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
  1. cat会将文件列表发送到的标准输入
  2. tr会将换行符转换为null并将其发送到
  3. xargs需要空分隔的参数( -0 ),并将每个参数发送到
  4. cp ,最后将它们复制到目标文件夹。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM