名前に特定のしきい値を超える数値を含むディレクトリ検索

名前に特定のしきい値を超える数値を含むディレクトリ検索

これは、条件付きの修正したいコマンドです。

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

考えることはできますが、seqfindと一緒に使用する方法がわかりません。より良い選択肢があると確信しています。

seq -f "backup%1.0f" 20190310 20200131

ベストアンサー1

zshシェルを使用すると、ファイル名のワイルドカードパターンは<n-m>数値範囲nm含む)と一致します。

模様

/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)

これにより、パス内のディレクトリへのシンボリックリンクも確認されます。

おすすめ記事