このコマンドをどのように短縮できますか?目的は、ファイル名が一致するABC
フォルダに最新の3つのファイルを表示してから、ファイル名が一致してuvw
同じ操作を実行することです。xyz
今後検索する文字列を追加する必要があるので、この長さを短くしたいと思います。
find . -name 'ABC' | xargs ls | grep -i uvw |sort| tail -n 3; find . -name 'ABC' | xargs ls | grep -i xyz |sort| tail -n 3
出力例:
2018-06-23T01-23-56.919Z-UVW.gz
2018-06-23T01-29-56.556Z-UVW.gz
2018-06-23T23-26-14.463Z-UVW.gz
2018-08-08T00-16-22.923Z-xyz.js
2018-08-08T00-16-24.517Z-xyz.js
2018-08-08T00-16-25.427Z-xyz.js
ベストアンサー1
そしてzsh
:
set -o extendedglob # best in ~/.zshrc
for w (uvw xyz) printf '%s\n' **/ABC/(#i)*$w*(D[-3,-1]:t)
**/
: すべてのレベルのサブディレクトリ(#i)
:大文字と小文字を区別せずに次のように一致します。(D[-3,-1]:t)
: グローバル予選D
: 隠しファイルを含め、find
次の隠しディレクトリを表示します。[-3,-1]
:最後の3つだけを選択します(グローブはデフォルトで語彙順にソートされます)。:t
:修飾子抽出済み尾あなたと同じファイルパス(デフォルト名ls
)
ABC ディレクトリが複数ある場合、そのディレクトリの名前がソートに影響します。のファイルがa/ABC
のファイルの前に表示されますb/ABC
。