这是我拥有的命令,并希望在其他条件下进行修改:
find /home/user/backups/ -mindepth 2 -maxdepth 3 -name "*~EEEE000.tif" -print
这是输出ls /home/user/backups/
:
backup20170101_somerandomstring
backup20170115_somerandomstring
backup20170230_somerandomstring
backup20170305_somerandomstring
backup20170408_somerandomstring
backup20170521_somerandomstring
.
.
.
backup20190111_somerandomstring
backup20190130_somerandomstring
backup20190209_somerandomstring
backup20190301_somerandomstring
backup20190303_somerandomstring
backup20190311_somerandomstring
backup20190313_somerandomstring
backup20190412_somerandomstring
.
.
.
backup20200102_somerandomstring
backup20200103_somerandomstring
backup20200105_somerandomstring
backup20200110_somerandomstring
.
.
.
我只想搜索在2019-03-10之后生成的目录。因此,可以很容易地将其视为目录 ,其名称中的数字大于20190310
单词后的数字backup
。
我可以选择,seq
但不知道如何与find一起使用。而且我敢肯定还有更好的选择。
seq -f "backup%1.0f" 20190310 20200131
使用zsh
外壳程序,文件名遍历模式<n-m>
将范围内的数字与匹配n
(m
包括在内)。
图案
/home/user/backups/backup<20190311->_*
会匹配/home/user/backups
以该字符串开头的所有名称,backup
并紧随其后的是一个20190311
或更大的数字,然后是下划线和可能更多的字符。
仅匹配目录:
/home/user/backups/backup<20190311->_*(/)
将其与原始find
命令一起使用:
find /home/user/backups/backup<20190311->_*(/) \
-mindepth 1 -maxdepth 2 -name "*~EEEE000.tif" -print
这将在全局匹配的每个目录中搜索以~EEEE000.tif
(在特定目录深度处)结尾的文件或目录的名称。它将打印找到的路径名。搜索深度已进行调整,以解决搜索路径根的额外深度。
不使用find
,仅打印常规文件的名称:
print -rC1 -- \
/home/user/backups/backup<20190311->_*/*'~EEEE000.tif'(.ND) \
/home/user/backups/backup<20190311->_*/*/*'~EEEE000.tif'(.ND)
但是,这也将解析路径中目录的符号链接。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句