Linuxを使用してサブディレクトリから高レベルにデータをコピーする方法

Linuxを使用してサブディレクトリから高レベルにデータをコピーする方法

次のディレクトリとファイル構造があります。

path/A/1/a/11.txt
path/A/1/a/12.txt
path/A/2/a/21.txt
path/A/3/a/31.txt

このファイルをあるレベルより高い別のパスにコピーしたいと思います。新しいパスでは、サブディレクトリ「a」は使用できません。

path2/A/1/11.txt
path2/A/1/12.txt
path2/A/2/21.txt
path2/A/3/31.txt

複数のディレクトリがあり、その中に複数のファイルがあるため、以下のコマンドは単に使用できません。

cp -R path/A/1/a/*.txt path2/A/1/

入力を探します。ありがとう

ベストアンサー1

ループを使いましょう。

from=some/path
to=some/other/path2

for dir in "$from"/A/*/; do
  dest=${dir/#$from/$to}
  mkdir -p "$dest"
  cp -v "$dir"/*/*.txt "$dest"
done

コマンドパターンの末尾のスラッシュを参照してくださいfor。結果をディレクトリに限定してください。

おすすめ記事