Utilizzando espressioni regolari con cp


11

Questa è una domanda semplice Sto cercando di copiare tutti i file nella directory corrente che iniziano con "axis-2" e terminano con ".jar" in una directory di destinazione, diciamo che è ~ / MyDirectory. Il mio primo pensiero è stato quello di provare

cp '^axis2.*jar$' ~/MyDirectory

Ma questo non funziona. Non sono nemmeno sicuro di poter usare espressioni regolari con cp. Inoltre non ho usato espressioni regolari da un po 'di tempo e la mia sintassi potrebbe essere totalmente disattivata. Quando provo questo cp, viene visualizzato semplicemente un messaggio di errore "Nessun file o directory del genere". Qualcuno ha qualche suggerimento su come procedere? Grazie!

Risposte:


15

La shell UNIX utilizza modelli glob , non espressioni regolari. Quindi, se si desidera abbinare i nomi dei file che iniziano axis2e finiscono con .jar, si utilizza:

cp axis2*.jar /destination/directory

Molte grazie! L'ho capito da solo, ma non sapevo dei modelli di glob, quindi è utile e informativo.
Nick Van Hoogenstyn,

7

Se hai GNU finde GNU cpdisponibili, puoi usare espressioni regolari come nel seguente comando:

find . -maxdepth 1 -regextype posix-basic -regex '.*/axis2[^/]*jar$' \
       -exec cp -t ~/MyDirectory {} +

Questo può essere utile se né il modello glob né la suite del modello glob estesa bash sono le tue esigenze.


0

Mi piace molto la sintassi regex dello renamescript perl (di Robin Barker e Larry Wall), ad esempio:

rename "s/OldFile/NewFile/" OldFile*

OldFile.ce OldFile.hvengono rinominati in NewFile.ce NewFile.h, rispettivamente

Volevo semplicemente la stessa identica cosa con un comando di copia:

copy "s/OldFile/NewFile/" OldFile*

Quindi ho duplicato quello script e ho cambiato l'istruzione rename da copiare tramite File::Copy. Et voilà! Un comando di copia con sintassi perl-regex: jcward / vopy .

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.