作为文件/目录命名的标准,我使用诸如将日期和标签字符串放入由下划线分隔的文件名中的方法,例如:
2015_03_10_usa_nyc_vacations_album_pictures
Run Code Online (Sandbox Code Playgroud)
很长一段时间以来,我一直使用 Recoll 之类的软件,但通常它提供的记录比我需要的要多得多。由于我的命名非常一致,我认为应该有一种方法可以使用 find 命令对其进行脚本化。
虽然我知道如何对单个条件执行查找搜索,但我不确定如何找到多个条件/条件。也就是说,我如何找到名称满足某些条件的所有文件。让我们考虑以下包含
第一个
find DIR \( -name 2015\* -a \( -name \*album\* -o -name \*picture\* \) \) -delete
Run Code Online (Sandbox Code Playgroud)
在哪里
*
以避免扩张-delete
成你喜欢的任何东西第二个留作作业(提示\!
)
输入以下内容通常是不值得的:
find /dir -regex '.*2015.*\(album.*\|picture.*\)'
不要浪费你的时间,使用 grep 和“每个任务一个工具”的 UNIX 概念:
find /dir | egrep '2015.*(album|picture)'
好处:
对于第一个find
来说-regex
会很好:
find /dir -regex '.*2015.*\(album.*\|picture.*\)'
Run Code Online (Sandbox Code Playgroud)
对于第二个:
find . -name "*album*" -a -name "*vacations*" -a -not -name "*2015*"
Run Code Online (Sandbox Code Playgroud)