2016-04-23 21 views
-1

Ich habe viele Dateien mit dem Namen chr1_gene _ *. Roh. Ich möchte einige von ihnen behalten. Also benutze ich folgenden Befehl.Wie entfernt man bestimmte Musterdateien mit Ausnahme bestimmter Musterdateien aus einer Liste?

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 {} \; 

Manchmal sind zu viele Dateien, die ich behalten möchte. Ich möchte "-nicht -name" nicht zu oft eingeben. Gibt es eine Möglichkeit, eine Liste in "-nicht-Name" zu setzen?

+0

Sie könnten die Dateinamen in eine Liste einfügen und dann ein 'find * .raw | grep -v -f Liste | xargs rm -rf'. Das ist der Filter, der mit 'grep -v' aus der Liste benannt wird und die gefilterte Dateiliste zum Löschen an xargs weiterleitet. –

Antwort

0

können Sie erreichen dies ein Skript sagen mit notnamescript.sh:

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

Setzen Sie die alle -not -name Namen in einer Datei notnamelist genannt. Denken Sie daran, sollte keine abschließenden leeren Zeilen sein.

find . -maxdepth 1 -type f -name "*.name" $(./notnamescript.sh) -exec rm -rf {} \;