ディレクトリがありますㅏそして第二。それぞれに異なるディレクトリが含まれていますプロジェクト.json中。ただプロジェクト.jsonファイルはディレクトリに保持されるため、ディレクトリをコピーして貼り付けることはできません。
ㅏ:
./path/Item A/item.json
./path/Item B/item.json
...
./path/Item Z/item.json
第二:
./new/Item A/item.json
./new/Item B/item.json
...
./new/Item Z/item.json
./path/
どのitem.jsonファイルを適切なフォルダにコピーするのですか./new
?
私の解決策:
ディレクトリのインポート
ls -l ./path | grep "^d" | cut -d' ' -f 16
その後、結果を次のように使用できます。
for i in `ls -l ./path | grep "^d" | cut -d' ' -f 16`; echo "Dir: $i"; done
だから私はcp
彼らと一緒にできるように
for i in `ls -l ./path | grep "^d" | cut -d' ' -f 16`; cp "$i/item.json" "../new/$i/item.json" ; done
この解決策は大丈夫ですが、よりエレガントな方法があると確信しています。
答え1
次の行が役に立ちます。
$ find ./path/ -type f -exec bash -c 'cp $0 ${0/path/new}' {} \;
ここでは、コマンドはディレクトリ内のすべてのテキストファイルをfind
検索します。./path/
ファイルが見つかったら、/new/
単に文字列をtoに置き換える小さなbashスクリプトを呼び出して、path
ファイルをターゲットディレクトリにコピーしますnew
。
答え2
あなたの解決策は素晴らしいです!他のオプションを見たい場合は、ここに私のアドバイスがありますcp
!
私はあなたが "item.json"ファイルだけをコピーし、他のものをコピーしたくないとします。
cd path; cp --parents */item.json ../new
答え3
cpio
(またはtar
、しかしIMHOは遅く、cpioのようなオプションはありません)を使用してください-p
!権限、日付など(必要な場合)、もちろんディレクトリ構造も維持します。
つまり:cd path ; find . | cpio -pvmd ../new