tar すべて存在しないファイルのリスト

tar すべて存在しないファイルのリスト

次のスクリプトでコマンドを実行しています。

tar -c -f ar.tar a b c d

ここで、b、c、dは存在せず、ディレクトリにすることができます。私が思いついた解決策は、ls -dtoの出力をパイプgrepしてtarコマンドに接続するか、拡張globを開くことでした@(a|b|c|d)

これを行うよりクリーンな方法はありますか?私はDebian Wheezyを使用していますが、パラメータがないようです--include

答え1

あなたは試すことができます

 tar cf ar.tar $(ls a b c d )

どこ

  • c作成に使用
  • f ar.tartar ファイルの指定

  • $(ls a b c d)標準入力に実際に存在するファイルを一覧表示します(他のファイルについてはエラーを表示します)。

答え2

tarアーカイブ内のファイルのフルパスを取得できる場合は、次のことができます。

tar -c -f ar.tar $(readlink -e a b c d)

-ereadlink オプションは既存のファイル名を正規化し、他のファイル名は自動的に無視します。

答え3

使用

find path/to/dir -name "*.ext1" -o -name "*.ext2"

説明する

  1. 最初のパラメータは検索するディレクトリです。
  2. 再帰はデフォルトで行われますfind
  3. したがって、-o上記-orの内容は、このワイルドカードまたはこれを検索することを意味します。モードが1つしかない場合は必要ありません-o
  4. ワイルドカードパターンの周囲には引用符が必要です。

関連情報