GNU/Linux >> Linux Esercitazione >  >> Linux

Batch ridenominazione dei file nella riga di comando e Xargs

Questo può essere fatto anche con xargs e sed per modificare l'estensione del file.

ls | grep \.png$ | sed 'p;s/\.png/\.jpg/' | xargs -n2 mv

Puoi stampare il nome del file originale insieme a quello che vuoi che sia il nome del file. Quindi chiedi a xargs di utilizzare questi due argomenti nel comando di spostamento. Per il one-liner, ho anche aggiunto un grep per filtrare tutto ciò che non è un file *.png.


come faccio a rinominare il file in modo che possa avere solo un'estensione.

cd dir/with/messedup/files

for file in *.png.jpg; do
  mv "$file" "${file%.png.jpg}.jpg"
done

in futuro, usando xargs, come posso modificare l'estensione del file simular in second command?

Che io sappia, non si può fare. Il modo migliore per farlo sarebbe utilizzare un ciclo for con sostituzione di parametri molto simile a quello sopra:

for file in *.png; do
  convert "$file" -resize "${file%.png}.jpg"
done

Se hai dei file nelle sottodirectory che vuoi convertire, puoi reindirizzare find a un while read ciclo:

find . -type f -name '*.png' |
while read file; do
  convert "$file" -resize "${file%.png}.jpg"
done

NOTA: Generalmente è considerata una cattiva idea usare l'output di ls in uno script di shell. Mentre il tuo esempio potrebbe aver funzionato bene, ci sono molti esempi in cui non funziona. Ad esempio, se i tuoi nomi di file contengono una nuova riga (cosa che unix consente), ls probabilmente non sfuggirà a quelli per te. (Questo in realtà dipende dalla tua implementazione, che è un altro motivo per non usare ls negli script; il suo comportamento varia notevolmente da una casella all'altra.) Otterrai risultati più coerenti se utilizzi find in un ciclo while-read o file globbing (ad es. *.png ) in un ciclo for.


Linux
  1. Trova file e directory su Linux con il comando find

  2. Come modificare autorizzazioni e proprietari tramite riga di comando

  3. Come eliminare file e directory in Linux dalla riga di comando

  4. Come nascondere file e cartelle in File Manager senza rinominare

  5. Metamorphose 2 – Rinomina in batch i tuoi file e cartelle su Linux

Come spostare file e directory in Linux (comando mv)

Comando Cp in Linux (copia file)

Comando Stat:Visualizza gli attributi di file e directory

Trovare i file e le cartelle più grandi nella riga di comando di Linux

Comando tar di Linux per comprimere ed estrarre file

Rinominare file e cartelle in cPanel