我不建议尝试编写规则来豁免特定文件。我更有可能做的是尝试在您要删除的文件的名称中找到文件掩码/glob或其他一些锚点,而您要保留的文件没有这些锚点。在大多数情况下,您可以通过扩展来做到这一点。不幸的是,因为您没有提到任何文件的名称,所以我无法更具体地帮助您。
类似两个(或更多)查找循环:-
find *.mp3 d.mp3 -maxdepth 1 -type f | while read mp3s
do
mv $mp3s ~/d.stuff-to-keep
done
find *.txt d.mp3 -maxdepth 1 -type f while read textfiles
do
rm -v $textfiles
done
如果没有,请查找文件的其他一些共同特征。如果没有,您可能需要重命名文件以给自己一个。我总是在我的文件名中放置很多锚(单独的名称字段、扩展名等),因为这样我就有很多不同的方式来做我需要的事情。我通常的名称格式是:-
<extension>.+<author>+<year>+<work-name>+<volume-number>+<number-of-volumes>
加号是字段分隔符,破折号用于空格,但没有破折号作为第一个或最后一个字符。所有小写字母,不允许使用控制字符或其他非字母数字。因此,我可以使用 awk、cut 或其他任何我可能想要使用的东西来分割它们,并轻松地重命名它们。将扩展名放在名称的开头也意味着 ls 只需要一个标志 (-l) 即可获得完美有序的文件系统。
如果您知道如何使用基本 POSIX 工具将目录结构用作数据库,则有时无需安装任何更复杂的东西即可完成您想做的事情。
在 UNIX 中,您对文件名有一个长字符限制,以及用于在长名称周围导航的制表符完成。不要害怕自由地使用它们。