如何检查文件夹中某些文件的内容?

如何检查文件夹中某些文件的内容?

我该如何编写脚本来循环遍历硬盘上的每个文件夹,查找任何视频文件,将它们提取到硬盘的根目录,然后删除其他所有内容?

答案1

通常,如果您需要在 Linux 中“循环”一组文件,您不想编写实际的 Bash 循环(例如使用for),而是使用find。以下内容适用于所有版本的find,并且 Linux 发行版附带 GNU find谁的手册你绝对应该在某个时候读一读。

请谨慎使用以下命令。如果你不知道自己在做什么,或者没有先检查结果,你可以不可逆转地丢失数据。

寻找/安装/驱动器-type f \(-iname“* .mp4”-o-iname“* .avi”\)\
-exec 回显 mv'{}'/安装/驱动器/\;

这将打印命令列表mv。一旦您确定它执行了您想要的操作,请echo从命令中删除并再次执行它。

笔记:

  • -type f将限制结果仅限于文件。
  • find将会覆盖同名文件,且不会发出警告。为避免冲突,请使用mv -i,这样在这种情况下会提示您。
  • 您可以添加更多条件来搜索其他文件类型,例如-o -iname "*.mov"等等。

第二步,我们将删除驱动器根目录中不存在的所有内容。为此,我们需要两个命令,因为您首先要删除所有文件……

寻找/安装/驱动器-mindepth 2 -类型 f

确定列出了要删除的所有内容后,将其添加-delete到命令中。这样mindepth 2可确保您的根目录(包含其中的所有视频)保持不变。

然后,找到剩余的空文件夹:

寻找/安装/驱动器-mindepth 1-深度-类型 d-空

与上面类似,添加-delete此命令即可实际删除空目录。

相关内容