各最上位ディレクトリを別々に圧縮

各最上位ディレクトリを別々に圧縮

一連のディレクトリのtarballを作成するには?

たとえば、私のホームディレクトリに「one」、「two」、「Three」、および「four」というディレクトリが含まれている場合、one.tar.gz、two.tar.gz、Three.tar.gz、およびfourどのように生成しますか? tar.gz?

答え1

for dir in one two three four; do
    tar_file_name="$dir".tar.gz
    test -f "$tar_file_name" || tar -czf "$tar_file_name" "$dir"
done

すべてのディレクトリ名(シンボリックリンクではなく物理ディレクトリ):

#! /bin/bash

shopt -s dotglob

for dir in *; do
    test -d "$dir" && test ! -L "$dir" || continue
    tar_file_name="$dir".tar.gz
    test -f "$tar_file_name" || tar -czf "$tar_file_name" "$dir"
done

関連情報