ich ein Verzeichnis in UNIX haben, die eine Tausende von .TGZ komprimierte Dateien hat, sie folgen diesem Muster:Shellscript - bei Verarbeitung Dateinamen Muster
01.red.something.tgz
02.red.something.tgz
03.red.anything.tgz
04.red.something.tgz
01.blue.something.tgz
02.blue.everything.tgz
03.blue.something.tgz
04.blue.something.tgz
01.yellow.something.tgz
02.yellow.blablathing.tgz
03.yellow.something.tgz
04.yellow.something.tgz
Sie verwenden eine große Menge aus dem Dateisystem, und ich brauche um sie aufzulisten, ohne die Datei selbst zu extrahieren. Eigentlich wird es etwas dauern, also glaube ich, dass dieses Shellscript dem Bedarf entsprechen wird. Ich bin irgendwie neu zu Shell, ich lerne, damit ich diese .sh gemacht
$pattern = "red"
for file in *.tgz
do
if [[ ${file} == '...${pattern}.*.tgz' ]]; then
echo" ==> ${file} match the pattern and the output dir is : out/"
tar -tf $file > ./out/$file
else
echo "${file} Doesn't match the pattern"
fi
done
Aber ich habe etwas falsch in dem wenn Teil gemacht, und selbst wenn das Muster abgestimmt ist, ich habe hat die 'Nicht stimmt mit der Muster' Nachricht überein.
Ich weiß, es ist ein bisschen einfach wenn, aber ich kann nicht verstehen, warum dieser Typ nicht funktioniert. Ich wäre dankbar, wenn ihr erklären könntet, warum das nicht funktioniert.
Vielen Dank.
'==' ist nicht das Spiel Betreiber; Lies 'Globbing' nach und benutze '*. $ {pattern}. *. tgz' direkt in der For-Schleife. –
Danke, ich werde eine Suche machen – Imkls