![ファイルリストコマンドlsで複数のパターンを一致させますか? [コピー]](https://linux33.com/image/132981/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%83%AA%E3%82%B9%E3%83%88%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89ls%E3%81%A7%E8%A4%87%E6%95%B0%E3%81%AE%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%E3%82%92%E4%B8%80%E8%87%B4%E3%81%95%E3%81%9B%E3%81%BE%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
私のディレクトリにはたくさんのファイルがあります。名前に「abc」と「xyz」を含むファイルをリスト、コピー、または移動したいです。パターンマッチングにANDを使用する方法は?
一般コマンド:ls *abc* *xyz*
ORにのみ使用されます。
答え1
この方法を使用してください。
ls *abc*xyz* *xyz*abc*
inmv
またはを使用すると、ワイルドカードを使用してファイルを見つけてコピー/移動したいファイル以上を持つことができるので、cp
オプションを使用してターゲットディレクトリを指定するだけです。-t
cp -t /path/to/dest *abc*xyz* *xyz*abc*
または、find
次のようなものを使用してください。
find \( -name '*abc*' -a -name '*xyz*' \)
これはfind -name '*abc*' -name '*xyz*'
で文書化されたものと同じです。man find
:
式1 式2
1行の2つの式は、暗黙の「and」で連結されていると見なされます。式2次の場合は評価されません。式1偽です。式1-ㅏ式2
それは同じです式1 式2。式1-そして式2
それは同じです式1 式2しかし、POSIXと互換性がありません。
-exec ...
上記のコマンドに加えて、見つかったファイルで目的の操作を実行できます。
find \( -name '*abc*' -a -name '*xyz*' \) -exec do-stuffs {} +