以下を使用してディレクトリのアーカイブを作成する必要があります。tar
シェルスクリプトからしかし、隠されたファイルとサイズが0
。保管されます。
端末から次のパラメータを送信しようとしています。
/bin/bash ss1 /home/user arch /home/user/folder
しかし、それは私にいくつかのtarエラーを与えました。私は次のように保管しようとしています。
tar -cvf --exclude=.* $1/$2 $3
しかし、これは正しくなく、正しい構文が何であるか、空のファイルと隠されたファイルを除外する方法がわかりません。
ベストアンサー1
あなたがこれをタグ付けしたので、linux
私はあなたがGNUfind
とGNUを持っていると仮定しますtar
。
ファイル名に改行文字が含まれておらず、空のディレクトリを保持したくない場合:
find "$3" -type f \! -empty \! -name '.*' | tar cvf "$1/$2" -T -
find
そのファイルを見つけて、アーカイブするファイルのリストを読み取るように-T -
指示します。tar
stdin
空のディレクトリを含めるには、次の点を改善してください。
find "$3" \( -type d -empty \) -o \( -type f \! -empty \! -name '.*' \) | \
tar cvf "$1/$2" -T -
もしあなたなら返品改行を含むファイル名を処理したいです。
find "$3" \( \( -type d -empty \) -o \( -type f \! -empty \! -name '.*' \) \) -print0 | \
tar cvf "$1/$2" --null -T -