まだ存在しないファイルのファイル名パターン

まだ存在しないファイルのファイル名パターン

私と同じシェルモードでは、{abc,def}xyzそれを使用してまだ存在していないファイル(またはディレクトリ)を作成できます。

$ ls
$ touch {abc,def}xyz
$ mkdir 123{a,b,c}
$ ls
123a  123b  123c  abcxyz  defxyz

私を混乱させることは、パターンに一致する各フォルダセット内にサブディレクトリを作成する方法です。たとえば、今123a123b、 があるので、123c明示的にリストせずに各ディレクトリ内にサブディレクトリを作成できますか?

$ mkdir {12*}/rsnapshot         # Fails because 12* isn't a list
$ mkdir 12*/rnapshot            # Fails because 12*/rsnapshot doesn't exist
$ mkdir 123{a,b,c}/rsnapshot    # Succeeds but more complex than I'd like

最後の例は機能しますが、サブセクションに各ディレクトリ名の特定の部分をリストする必要があります{...}。ディレクトリ数が多いと不可能です。

空白のない単純な名前にもこの行を適用しましたが、一般的なソリューションでは明確でもエレガントでもありません。

echo -n 12* '' | xargs -r -d ' ' -I {} echo mkdir {}/rsnapshot

bash繰り返しなしで同様の名前のサブディレクトリセットにファイルまたはサブディレクトリを作成できるパターンテンプレートはありますか?

ベストアンサー1

前のコマンドパラメータをもう一度呼び出すだけです。!$

mkdir 123{a,b,c}
mkdir !$/rsnapshot

パターンで指定されたディレクトリ名内にサブディレクトリを作成するために find を使用しない場合サイクル

find . -maxdepth 1 -type d -name "123*" -exec mkdir '{}/rsnapshot' \;

おすすめ記事