複数のディレクトリにある同じ名前のファイルに対してコマンドを実行する

複数のディレクトリにある同じ名前のファイルに対してコマンドを実行する

同じファイル名の下に異なるディレクトリにある複数のパラメータを使用するコマンドを実行したいと思います。

mycommand dir-001/myfile dir-002/myfile dir-003/myfile … dir-048/myfile

すべてのファイルを1から48までの番号付きサブディレクトリに配置するか、コマンドパラメータで任意の番号を指定できるいくつかのシェルコマンドを探しています。

ベストアンサー1

3桁の数字(順番に)などの標準ファイル名のワイルドカードを使用できます。

$ mycommand dir-[0-9][0-9][0-9]/myfile

デフォルトのワイルドカードには、1桁の数字のパターン、2桁の数字のパターンなどが必要です。

$ mycommand dir-[0-9]/myfile dir-[0-9][0-9]/myfile

Zsh(他のシェルではない)もサポートするか、mycommand dir-<->/myfileたとえばmycommand dir-<3-42>/myfile3〜42回ディレクトリをサポートします。

または中かっこ拡張を好む場合(そしてシェルがそれをサポートしている場合):

$ mycommand dir-{1..3}/myfile

ディレクトリ名の前に0が含まれている場合は、中かっこで囲みますdir-{001..048}/myfile

中括弧拡張を使用すると、この操作も実行できます(ksh93およびzshでは可能ですが、bashでは不可能)。

$ mycommand dir-{1..$n}/myfile

これは$n整数に拡張されます。

おすすめ記事