pdf
ファイルやその他の拡張子を含むさまざまなフォルダがあります。pdf
すべてのファイルを別の宛先にコピーしたいです。しかし、次のようにfindで実行すると:
"${SEARCHDIR}" -iname "*.pdf" | xargs -d "\n" -I {} cp -r --backup=t {} "${OUTPUTFOLDER}/"
すべてのファイルを1つの宛先に保存しましたがpdf
、これは私にとってとても混乱しています。だから、親ディレクトリを含む一致するファイルをコピーしたいのですが、いいえこのディレクトリに一致しないファイルがあります。
入力する:
user/search/test/sub
user/search/test/sub2
user/search/test/file.pdf
user/search/test/file.doc
user/search/test2/sub
user/search/test2/sub2/file2.pdf
user/search/test2/file3.pdf
user/search/test2/file.doc
次のようにコピーする必要があります。
/destination/test/file.pdf
/destination/sub2/file2.pdf
/destination/test2/file3.pdf
編集する: フルパスをコピーしたくありません。私の出力が次のように表示されたくありません。
/destination/test/file.pdf
/destination/test2/sub2/file2.pdf
/destination/test2/file3.pdf
どうすればいいですか?
ベストアンサー1
では、zsh
次のことができます。
set -o extendedglob
for file ( $SEARCHDIR/**/*.(#i)pdf(ND^/) ) {
dest=$OUTPUTFOLDER/${file:t2}
mkdir -p -- $dest:h && cp --backup=t -- $file $dest
}
ここでは${file:t2}
、ファイルの2つの部分で構成されるテール、ファイル名、および親ディレクトリのファイル名を取得します。次に、h
そのパスの先頭をディレクトリにし、そこにファイルをコピーします。