これは、条件付きの修正したいコマンドです。
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
答え1
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
これは、globと一致するすべてのディレクトリで~EEEE000.tif
(特定のディレクトリの深さで)で終わるファイルまたはディレクトリの名前を検索します。見つかったパス名を印刷します。探索経路ルートの更なる深さを考慮して探索深さを調整した。
None find
、一般ファイルの名前のみを印刷します。
print -rC1 -- \
/home/user/backups/backup<20190311->_*/*'~EEEE000.tif'(.ND) \
/home/user/backups/backup<20190311->_*/*/*'~EEEE000.tif'(.ND)
これにより、パス内のディレクトリへのシンボリックリンクも確認されます。