用于搜索目录中的 .deb 文件并将其复制到另一个位置的脚本

用于搜索目录中的 .deb 文件并将其复制到另一个位置的脚本

如果我有一个目录 A,其中包含目录 B、C,我需要一个搜索脚本

目录 B、C、D 用于存放 .deb 文件,如果找到则将它们复制到我选择的位置。

该脚本应该可以减少手动搜索和复制的工作量。

任何想法 ?

答案1

如果你不需要递归搜索,那么一个简单的 bash 括号扩展

cp -t /location/you/choose/ /path/to/A/{B,C,D}/*.deb

应该可以。如果你想搜索全部递归地访问 A 的子目录,那么最可移植的方法可能是

find /path/to/A -name '*.deb' -exec cp -t /location/you/choose/ {} +

如果您的 shell 支持,您也可以使用globstarshell 选项进行cp递归,而无需使用find- 在 shell 提示符下键入shopthelp shopt获取更多信息。如果您需要排除某些子目录,那么您可以将一个添加-prune到 find 命令中。

与往常一样,您需要提前考虑在文件名不唯一的情况下要做什么 - 您可以在命令中添加-n或,或使用选项。对于 deb 文件,这可能无关紧要,因为(除非文件损坏)任何非唯一文件名都应与完全相同的重复文件相对应。--no-clobbercp--backup=numbered

答案2

看起来你什么都没试过,但无论如何。这是台词,man find如果你真的感兴趣的话,我会谈谈的。

find /path/to/A -name "*.deb" -exec mv {} /path/to/new_directory \; # Moves
find /path/to/A -name "*.deb" -exec cp {} /path/to/new_directory \; # Copies

会将 .deb 文件从 A(递归搜索)移动到 new_directory。顺便说一句,这更多是与 *nix 相关,而不是特定于 Ubuntu。

相关内容