2017-10-30 14 views
0

私はABC.txt, ABC.1.txt, ABC.2.txt, XYZ.txt, XYZ.1.txtのような名前の複数のファイル(〜1000)を含むディレクトリを持っています。これらの名前は、最初のインデックス.で分割した場合たとえば、名前はABC XYZなどと読み取られます。次に、これらの最初のインデックスが存在しないファイルを他のファイル(参照ファイル)から削除します。上記のファイル名が与えられた場合、私の他の(参照ファイル)には1つの名前しかなく、XYZが含まれているとしましょう。そのため、ディレクトリに保存されるファイルはXYZ.txtXYZ.1.txtになり、正確な接頭辞がXYZでないものはすべて削除されます。正確に言ったのは、名前がXYZA.txtのファイルが存在する可能性があるため、そのファイルを保持するために完全に一致する必要があるからです。別のファイルのファイル名に基づいてディレクトリからファイルを削除する

誰でも助けてくれますか?どうもありがとうございました。

編集:1つのディレクトリにすべてのファイル:ABC.txt, ABC.1.txt, ABC.2.txt, XYZ.txt, XYZ.1.txtがあり、参照ファイルはファイル名reference.txtとして別のディレクトリにあり、ABC、XYZ、CDEなどの他のディレクトリのファイル(接頭辞)名を含む1列のファイルです。

+1

あなたの質問にファイルを追加してください。 – Cyrus

+0

@Cyrusファイル名を追加しました。どうすればいいか教えてください。私はあなたの提案を理解することができません。それをちょっと詳しく教えてもらえますか?ありがとう。 – Newbie

答えて

0

には名前が削除されないと、ファイルに文字通り比較し、最初のドットまでのプレフィックスを抽出し、

for f in *.*; 
do if grep -qF "${f%%.*}" file; 
    then echo "skip $f"; 
    else echo "rm $f"; fi; 
done 

検索し、ファイル名にドットを持つすべてのファイルを試してみてください、とのrm fileコマンドをエコー。名前の付いたファイルにドットが付いていないことを確認してください。それ以外の場合は削除されます。

の前に細かく見える場合は、echoを削除してください。

関連する問題