現在のディレクトリから特定の名前だけを除外しながら、特定の拡張子を持つファイルをどのように見つけることができますか?

現在のディレクトリから特定の名前だけを除外しながら、特定の拡張子を持つファイルをどのように見つけることができますか?

欲しい探すGNU以外の環境の一部のファイル

  • 現在のディレクトリのみ
  • 拡張機能付き*.ext1そして*.ext2
  • しかし、名前1.*または名前2.*

次のコマンドは機能しますが、シェルは拡張されてい./*ます探す広範なファイルとディレクトリのリストを得ることができます。

find ./* -prune \( -name '*ext1' -o -name '*ext2' \) -a ! \( -name 'name1*' -o -name 'name2*' \)

修正する:

私はAIXで働いています。-最大深さオプション。

ベストアンサー1

そしてfind

find . ! -name . -prune \
    \( -name '*.ext1' -o -name '*.ext2' \) \
  ! \( -name 'name1.*' -o -name 'name2.*' \)

usingは-pruneGNU標準と同じです-maxdepth。ここでは、 をfind除くどのディレクトリにも入らないように指示します.

! -name .GNU標準と同様に、選択から除外されます。 GNUの場合。.! -name . -prune-mindepth 1 -maxdepth 1-mindepth 1find . \( -name . -o -prune \)

を使用すると、zsh次のこともできます。

set -o extendedglob
print -rC1 -- *.(ext1|ext2)~(name1|name2).*(ND)

~AND NOT演算子であり、(D)ドットファイルを含みます。

おすすめ記事