次のスクリプトでコマンドを実行しています。
tar -c -f ar.tar a b c d
ここで、b、c、dは存在せず、ディレクトリにすることができます。私が思いついた解決策は、ls -d
toの出力をパイプgrep
してtar
コマンドに接続するか、拡張globを開くことでした@(a|b|c|d)
。
これを行うよりクリーンな方法はありますか?私はDebian Wheezyを使用していますが、パラメータがないようです--include
。
答え1
あなたは試すことができます
tar cf ar.tar $(ls a b c d )
どこ
c
作成に使用f ar.tar
tar ファイルの指定$(ls a b c d)
標準入力に実際に存在するファイルを一覧表示します(他のファイルについてはエラーを表示します)。
答え2
tarアーカイブ内のファイルのフルパスを取得できる場合は、次のことができます。
tar -c -f ar.tar $(readlink -e a b c d)
-e
readlink オプションは既存のファイル名を正規化し、他のファイル名は自動的に無視します。
答え3
使用
find path/to/dir -name "*.ext1" -o -name "*.ext2"
説明する
- 最初のパラメータは検索するディレクトリです。
- 再帰はデフォルトで行われます
find
。 - したがって、
-o
上記-or
の内容は、このワイルドカードまたはこれを検索することを意味します。モードが1つしかない場合は必要ありません-o
。 - ワイルドカードパターンの周囲には引用符が必要です。