アプリ版:「スタンプのみでお礼する」機能のリリースについて

tarコマンドを利用してまとめる際に、除外したいファイルやディレクトリなどを --exclude hogehoge みたいな感じで指定するかと思うのですが、除外したいディレクトリが複数ある場合にはどのように記述するのが正しい記載方法になりますでしょうか?

数が少なければ、tar --exclude hoge1 --exclude hoge2 くらいで良いかと思いますが、これらが10個100個…と複数ある場合にはどのように記述しますでしょうか?

お詳しい方ご教授宜しくお願いいたします。

A 回答 (3件)

--exclude で除外する以外の方法として、


あらかじめ除外済みの一覧を作ってから
--files-from や xargs で渡すのは如何でしょうか

例1)
find "対象ディレクトリ" > list.txt
vi list.txt # 除外したいファイルを手作業で消す
tar cvf "纏めるファイル名.tar" --files-from=list.txt

例2)
find "対象ディレクトリ" \
| grep -v "除外したいファイル名の条件1" \
| grep -v "除外したいファイル名の条件2" \
| xargs tar cvf "纏めるファイル名.tar"

参考)
http://linuxjm.osdn.jp/html/GNU_findutils/man1/f …
http://linuxjm.osdn.jp/html/GNU_grep/man1/grep.1 …
http://linuxjm.osdn.jp/html/GNU_findutils/man1/x …
    • good
    • 1
この回答へのお礼

有難うございます。
とても高度な方法ですね、リンクを拝見しましたがすぐには理解が出来そうにありませんが、使えるようになるととても便利そうです。
正規表現での指定なので、こちらも少々難しいですが、すごく柔軟な指定が出来そうなイメージです。
有難うございます、じっくりと1つ1つ理解を進めてアドバイス頂きました内容はきっちり理解したいと思います。有難うございます。mm

お礼日時:2023/09/12 20:17

人に聞く前に、まずはマニュアルを読みましょう。


man tar
を実行すれば読めるはずです。

tarコマンドにはいくつもの種類があり(GNU tar、BSD tar 等)、それぞれ若干動作が違います。
どのtarかも確認しましょう。
ひとます
tar --version
を実行してみましょう


GNU tar と BSD tar では、 -X の後にファイルを指定すると、そのファイルの中身を --exclude に指定するパターンだと解釈するようです。
他のtarだとわかりません。
    • good
    • 0
この回答へのお礼

有難うございます。
マニュアル拝見するのですが、理解が及ばす申し訳ありません。
私のは、GNU tarと表示されました、種類が複数あるという事も初めて知りました。
-Xの後ろにファイル名の記載と、具体的な使用方法もアドバイスいただけたので、色々と試してみたいと思います、有難う御座います。

お礼日時:2023/09/12 15:56

部分一致が使えますので、質問の例ですと


「--exclude hoge*」で除外できますね。
条件に当てはまらない場合は複数のexclude指定をするか、そもそも別ディレクトリに必要なディレクトリだけコピーしてtarするかどちらかでしょうね。
    • good
    • 2
この回答へのお礼

有難うございます。
-Xオプションというものがあるらしいのですが、こちらはまた除外とは異なるものでしょうか?
そもそもの使い方が分からないので何ともなのです…。

お礼日時:2023/09/12 14:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A