ファイルがあるディレクトリのみをコピー

ファイルがあるディレクトリのみをコピー

ファイルとそのファイルを含むディレクトリを別の場所にコピーしようとしています。次のパスを見つけることができます。

find ~/dim_import/* -type f ! -name xdir | cut -d '/' -f 5-10

どの出力

general/header.txt
scripts/test
scripts/tt

別の場所にどのようにコピーできますか?たとえば、新しい場所は

new/general/header.txt
new/scripts/test
new/scripts/tt

問題は、空のディレクトリが多く、そのディレクトリをコピーしたくなく、ファイルがあるディレクトリとファイル自体だけをコピーしたいということです。

メモ:バッシュなし、使用sh

ベストアンサー1

シェル機能のみを使用する方法は次のとおりですPOSIX

find ~/dim_import/* -type f ! -name xdir -exec sh -c '
  p=${1%/*}; 
  d=${p##*/}; 
  f=${1##*/}; 
  mkdir -p new/"$d"; 
  cp "$1" new/"$d"' -- {} \;

おすすめ記事