小さなbashプロジェクトを完了しようとしていますが、パスが指定されたフォルダをtarしようとすると停止します。たとえば、プログラムはパスを受け取ります/home/folderx
。次に、ループを使用してそのディレクトリ内の各フォルダを見つけますfor i in ~/folderx/*; do...
。問題は、を使用してそのパス内のすべてのフォルダを圧縮しようとしましたが、tar -czvf $i.tgz $i -P
プログラムに提供されたフルパスが圧縮されていることです。結局、.tgz
正しい名前(圧縮したいディレクトリ名)のファイルを取得しましたが、その中には内容/home/folderx/name_of_the_folder/contents
以上の内容がありました。name_of_the_folder
問題は何ですか?とても感謝しています。
答え1
tarが必要なディレクトリになければなりません。
for i in ~/folderx/*; do...
繰り返してください
cd $i
tar -czvf $i.tgz . -P
cd -
これは私にとって効果的です。
答え2
まず、アーカイブファイルを作成してからコマンドを実行します。
たとえば、
destination__folder = "name_of_folder.tgz"
tar czvf $path/to/destination_folder $i
上記の例$i
は、スクリプトですでに使用しているものです。