我正在尝试在 Ubuntu 中使用 BASH 复制一系列文件和文件夹。按字母顺序复制文件非常重要,因为它们将进入数码相框,数码相框将按照文件添加到闪存驱动器的顺序读取文件。据我发现,Nautilus 根据 inode 编号复制它们,因此它们最终在图片框架上的顺序是困惑的。
根据我所做的搜索,我想出了以下命令:
for i in "$(find * -type f -print0 | sort)"; do cp -v "$i" "/media/PicFrame/$i"; done
这会导致文件名太长的错误。看来 BASH 正在尝试创建一个文件,每个文件名都用“\n”分隔。我尝试删除一些引号,但这会导致在尝试复制文件名片段时出现几个“无法统计”错误(因为许多文件名中都有空格)。
关于如何实现这项工作有什么想法吗?我对其他方法持开放态度,但我真的希望这是一个单独的命令/脚本,我可以每月在更换图片时运行它。 (我一直在 Windows 中这样做,但现在我尝试在 Ubuntu 中完成所有操作。我已经来来回回了大约两年了。)
最佳答案
改为在 while
循环中使用 read
。
find ... | while read file
do
cp ..."$file"...
done
不过,您可能需要考虑使用rsync
。
关于bash - 在 Ubuntu BASH 中按字母顺序复制文件夹中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10875363/