現在のディレクトリにファイルを抽出しています

現在のディレクトリにファイルを抽出しています

.sh で終わるすべてのスクリプトを検索して tar/アーカイブしたいので、次のように記述しました。

touch ~/archive.tar; find ~ -type f -name '*.sh' -exec rvf ~/archive.tar {} \; 

問題は、archive.tar というアーカイブを作成した後、アーカイブがファイルを現在のディレクトリに解凍せず、アーカイブ元のディレクトリに解凍することです。たとえば、というアーカイブされたスクリプトがあるかもしれません~/Desktop/wtf/delete.shが、それは現在のディレクトリではなくフォルダーに解凍されますwtf。では、すべてのスクリプトを ./filename.sh という形式にするには、どのように find スクリプトを編集すればよいのでしょうか。

答え1

を使用していると仮定するとGNU tar、次のように言うことができます。

tar --transform 's/.*\///' -xzf archive.tgz

これにより、ファイル名から最後のスラッシュまでのすべてが削除されます。

関連情報