清除不需要文件类型的媒体文件夹的命令或脚本

Nor*_*ird 2 scripts files

我有一个媒体下载文件夹,其中包含各种不相关的文件,例如自述文件、txt 和 torrent 文件以及 mp4、avi、mp3 和其他有效媒体文件。

我想要一个脚本或一组命令,我可以运行以cron定期通过或其他方式清除它,并遍历所有目录和子目录,删除不需要的文件。

mur*_*uru 5

创建一个包含要删除的扩展名的文件,每行一个(例如,dontwant.files):

.txt
.nfo
.torrent
.csv
Run Code Online (Sandbox Code Playgroud)

结合findgrepxargs以及rm

find /path/to/media/directory -type f -print0 |
  grep -zFf /path/to/dontwant.files |
  xargs -0 rm
Run Code Online (Sandbox Code Playgroud)
  • find-type f-print0将打印出所有找到由ASCII NULL字符分隔的文件的名称-唯一一个是划定的路径和文件名万无一失。
  • grepwith 用-zASCII NUL 字符分隔行,因此每个输出的文件名find都被视为单独的行。-F禁用正则表达式匹配,并-f从文件中读取模式。
  • xargs-0读取中的行分离由ASCII NULL字符,并且使用它们作为用于命令的参数,在这种情况下rm

这很容易转换为另一种方法(删除除一些扩展之外的所有内容)。例如,对于像 的文件want.files,包含:

.mp4
.srt
.avi
.mp3
Run Code Online (Sandbox Code Playgroud)

只有grep命令需要更改,-v用于否定匹配:

grep -vzFf /path/to/want.files |
Run Code Online (Sandbox Code Playgroud)