`ls` 一致パターンからディレクトリを除外する

`ls` 一致パターンからディレクトリを除外する

私は1つを除いて内部にファイルがlsあるディレクトリを持っています.png(特に便利ですが、再帰は必要ありません)。ディレクトリを除外します。

ls */*.png

うまくいきます。

ls (^one)*/*.png

標準出力を返しません。どのように実装できますか?

目を離してパイプを接続してespeak今聞くことができるのは標準出力だけです。

ベストアンサー1

オプション1- 次の使用のみls
拡張bashワイルドカードを開く(shopt -s extglob)、次のことができます。

ls !(one*)/*.png


オプション2- 結合lsgrep:

ls組み合わせることができます。grep -v

  • 例えばls */*.png | grep -v "one/"


オプション3- (最高のIMO)しかし、以下をfind使用しないでくださいls

すべてのサブディレクトリを再帰的に検索するには、次のコマンドを使用します。find

find . -type f -name "*.png" -not -path "*/one/*"


上記の単一のコード行はすべて、一致するパスを.pngフィルタリングしながらファイルを含むディレクトリを一覧表示しますone/。オプション3のみがこの操作を繰り返し実行します。

おすすめ記事