获取具有两个扩展名的文件列表,例如 deb|rpm|txt

Ale*_*nes 2 shell cron rm

我想每小时*.(deb|rpm)Downloads我的 Ubuntu 机器上的文件夹中删除文件。

我的 crontab 上有这个

* */1 * * * cd /home/alexalannunes/Downloads && ls *.deb > log.txt && rm  *.deb
Run Code Online (Sandbox Code Playgroud)

因为我想要记录哪些文件已被删除。

但这一行只删除*.deb. 我想删除文件(.deb|.rmp|.other_file)

这是可能的?

我试图在谷歌搜索,但我没有找到任何东西

谢谢!

lak*_*tak 5

您可以根据需要指定任意数量的扩展名,只需单独列出它们即可。例如:

* */1 * * * cd /home/alexalannunes/Downloads && ls *.deb *.rpm > log.txt && rm  *.deb *.rpm
Run Code Online (Sandbox Code Playgroud)

  • @AlexAlanNunes 您可以放心地忽略该错误。事实上,`ls *.{mp3,exe,mp4}` 与`ls *.mp3 *.exe *.mp4` _完全相同,没有区别。在调用 `ls` 之前,shell 会将 `*.{mp3,exe,mp4}` 扩展为 `*.mp3 *.exe *.mp4`,因此两者都将运行完全相同的命令。 (3认同)
  • 但是在所有情况下,如果任何扩展名不匹配,`ls ... && rm` 都不会删除*任何东西*。`nullglob` 可以避免这种情况,但是当 *no* 扩展名匹配时它最终会令人困惑:`ls` 会列出所有文件,而 `rm` 会失败。 (2认同)
  • `rm -f` 将使 rm 不再抱怨 (2认同)