カレントのディレクトリだけを手軽にアーカイブ(tar)したい

Linuxにターミナルでログインしていると、
カレントにあるファイルを全部アーカイブしたいことがよくあります。

これは私の操作の癖もあるかもしれませんが、
アーカイブを幾つか解凍してあって、その中身だけを別の環境に持っていきたい事があります。

tar -zcvf archive.tar.gz *

これでも意外と強引に行けちゃったりします。
archive.tar.gzが存在するとエラーが出てしまいます。圧縮はできるけど。

それに例えば、

archiveA.tar.gz archiveB.tar.gz archiveC.tar.gz ・・・

なんてのがあった場合、それらもアーカイブされてしまって無駄です。

そこで、”ディレクトリだけ”って言うオプションがあるのかと思ったら無いようで・・・

 

ダッシュ(`)でディレクトリリストを渡せばいいだけですのでこんな感じで・・・

tar -zcvf archive.tar.gz `ls -F|grep /`

単にlsだとディレクトリかファイルかわからないので -F をつけます。
こうするとディレクトリに/が付くようになるので、grepで選別しています。

でも、ちょっとこれを毎回入力するのは面倒です。
というわけで、dtarというコマンドを定義してみました。

dtar(){
    if [ "$1" = "" ] ; then
        echo usage : dtar archivename
    else
       tar -zcvf $1.tar.gz `ls -F|grep /`
    fi
}

これをカレントの.bashrcとかに書いておけば、ログインしたら使えるようになっているはずです。