bash - 在 Ubuntu BASH 中按字母顺序复制文件夹中的文件

标签 bash ubuntu

我正在尝试在 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/

相关文章:

bash - Ubuntu 上列出所有信号的 bash 命令是什么?

bash - 如何列出当前工作目录中的所有目录?

linux - 如何将文件的行分成其他文件

bash - -bash : ant: command not found on mac os x El Capitan

python - 在 Python 3 上安装 spaCy 时出错

bash - 为什么我的 (ubuntu 11.10 bash 4.2.10, x86_64 ) 命名管道会堵塞?

bash - 如果时间晚于早上 6 点,则放弃部分 bash 脚本

linux - shell 脚本中的信号处理

bash - 在 bash 脚本仍在运行时强制将输出刷新到文件

c++ - 正确编写一个类并使用pthread与vlc库和c++