.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
これにより、ファイル名から最後のスラッシュまでのすべてが削除されます。