2016-04-23 5 views
-1

名前がchr1_gene _ *。rawのファイルがたくさんあります。私はそれらのいくつかを残したいと思います。だから私は次のコマンドを使う。特定のパターンファイル以外の特定のパターンファイルをリストから削除するにはどうすればよいですか?

find . -maxdepth 1 -type f -name "*.raw" -not -name "chr1_gene_448.raw" -not -name "chr1_gene_1914.raw" -not -name "chr1_gene_2456.raw" -not -name "chr1_gene_1554.raw" -not -name "chr1_gene_2024.raw" -not -name "chr1_gene_35.raw" -not -name "chr1_gene_509.raw" -not -name "chr1_gene_1952.raw" -not -name "chr1_gene_575.raw" -not -name "chr1_gene_2249.raw" -not -name "chr1_gene_272.raw" -not -name "chr1_gene_2158.raw" -exec rm -rf {} \; 

場合によっては、保存したいファイルが多すぎます。私は "-not -name"を何度もタイプしたくありません。 "-not -name"にリストを入れる方法はありますか?

+0

ファイル名をリストに入れてから、 'find * .raw | grep -v -fリスト| xargs rm -rf'となります。これは、リストから 'grep -v'でフィルタ名を取り出し、削除されたファイルリストをxargsに転送して削除します。 –

答えて

0

あなたはスクリプトを使用して、これを達成することができるがnotnamescript.shを言う:

#!/bin/bash 
while read line 
do 
echo "-not -name " $line 
done<notnamelist 

notnamelistと呼ばれるファイル内のすべての-not -nameの名前を入れてください。 には空白行がないことを覚えておいてください。

find . -maxdepth 1 -type f -name "*.name" $(./notnamescript.sh) -exec rm -rf {} \; 
関連する問題