Come escludere i file dall'archivio TAR usando le espressioni regolari?


10

Ho una domanda semplice, ma non riesco a trovare o risolvere la risposta. Voglio fare un archivio tar, ma voglio escludere alcuni file da esso usando l'espressione regolare.

Esempio del file da escludere è questo: 68x640X480.jpg

Ho provato questo senza fortuna:

tar cvf test.tar --exclude=[0-9]+x[0-9X]+\.jpg /data/foto

Qualcuno può aiutare?

Risposte:


11

È possibile utilizzare alcuni strumenti aggiuntivi come finde egrep:

find directory/ -type f -print | egrep -v '[0-9]+x[0-9X]+\.jpg' | tar cvfz directory.tar.gz -T -

Lo svantaggio del metodo sopra menzionato è che non funzionerà per tutti i possibili nomi di file. Un'altra opportunità è quella di utilizzare la funzionalità di esclusione integrata di tar:

tar -czvf directory.tar.gz --exclude='*x*X*.jpg' directory

Sfortunatamente il secondo metodo non funziona con le espressioni regolari, ma solo con i caratteri jolly.


Grazie, questo è quello che stavo cercando. Puoi per favore prendere nota di quali nomi di file non funzionerebbero? ad es. contenente quali personaggi?
Frodik,

Non dovresti preoccuparti troppo di questo - la maggior parte dei nomi di file funziona perfettamente con quella soluzione. Il problema è che i nomi di file UNIX / Linux possono includere praticamente tutto, anche i caratteri di controllo: tali combinazioni oscure non funzioneranno con la prima soluzione.
Vladimir Blaskov,

Una bella lettura relativa ai nomi di file UNIX / Linux / POSIX: dwheeler.com/essays/fixing-unix-linux-filenames.html
Vladimir Blaskov,

0

Forse dovresti provare cpio

http://cybertiggyr.com/cpio-howto

Legge dall'elenco dei file ed esegue l'archiviazione. È possibile generare un elenco di file utilizzando sed come indicato di seguito.

ls |sed   '/[0-9]*x[0-9]*X.*/d' >/tmp/files

È quindi possibile utilizzarlo come input per cpio.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.