私の入力フォルダにサブフォルダなどがfiles_input
含まれていて、これらのすべてのサブフォルダに別のサブフォルダがある場合。各サブフォルダーに。01-2015
02-2015
03-2015
index.html
これらすべてのファイルを同じフォルダ内の別々のファイルのように見えるようにというindex.html
フォルダにコピーするにはどうすればよいですか?files_output
もちろん、名前を変更する必要があります。そのために --backup を使ってみました。
頑張りました
find files_input -name \*.html -exec cp --backup=t '{}' files_output \;
番号を付けてファイルを1つだけコピーし、他のファイルをコピーしないでください。
これがどのように変わるのかわかりませんが、zshを使用しており、バージョンは次のようになります。
$ zsh --version | head -1
zsh 5.0.2 (x86_64-pc-linux-gnu)
$ bash --version | head -1
GNU bash, version 4.3.11(1)-release (x86_64-pc-linux-gnu)
$ cp --version | head -1
cp (GNU coreutils) 8.21
$ find --version | head -1
find (GNU findutils) 4.4.2
アイデアはありますか?
編集する:
たとえば、次のようにします。
cp --backup=t files_input/01-2015/index.html files_output
5回連続してfiles_output
フォルダにindex.htmlが表示されます! CPが故障しましたか? 5つの異なるファイルがないのはなぜですか?
ベストアンサー1
zsh
ユーザーがユーザーの場合:
$ tree files_input
files_input
|-- 01_2015
| |-- subfolder-1
| | `-- index.html
| |-- subfolder-2
| | `-- index.html
| |-- subfolder-3
| | `-- index.html
| |-- subfolder-4
| | `-- index.html
| `-- subfolder-5
| `-- index.html
|-- 02_2015
| |-- subfolder-1
| | `-- index.html
| |-- subfolder-2
| | `-- index.html
| |-- subfolder-3
| | `-- index.html
| |-- subfolder-4
| | `-- index.html
| `-- subfolder-5
| `-- index.html
(etc.)
$ mkdir -p files_output
$ autoload -U zmv
$ zmv -C './files_input/(*)/(*)/index.html' './files_output/$1-$2-index.html'
$ tree files_output
files_output
|-- 01_2015-subfolder-1-index.html
|-- 01_2015-subfolder-2-index.html
|-- 01_2015-subfolder-3-index.html
|-- 01_2015-subfolder-4-index.html
|-- 01_2015-subfolder-5-index.html
|-- 02_2015-subfolder-1-index.html
|-- 02_2015-subfolder-2-index.html
(etc.)
ここで何が起こるのかは、コマンドをzmv
使用できるようにすることですautoload -U zmv
。このコマンドは、一致するファイルの名前を変更、コピー、またはリンクするために使用されます。zsh
拡張ワイルドカードパターン。
私たちはオプションを使ってzmv
教えてくれ-C
ます。コピーファイルを移動する代わりに(デフォルト)。次に、コピーするファイルと一致するパターンを指定します./files_input/(*)/(*)/index.html
。どちらも(*)
ステップ2サブディレクトリ名と一致し、各ファイルの新しい名前に使用できるように括弧内に入れます。各ファイルの新しい名前は2番目の引数です。./files_output/$1-$2-index.html
ここ$1
で$2
、およびはパターンの角かっこでキャプチャされた文字列です(たとえば、サブディレクトリ名の逆参照)。どちらのパラメータも一重引用符で囲む必要があります。