GNU/Linux >> Linux Esercitazione >  >> Linux

Linux:rimuovi le estensioni di file per più file

Puoi passare esplicitamente una stringa vuota come argomento.

rename .old '' *.old

E con le sottocartelle, find . -type d -exec rename .old '' {}/*.old \; . {} è il sostituto della voce trovata con find e \; termina l'arglist per il comando dato dopo -exec .


rename è leggermente pericoloso, poiché secondo la sua pagina di manuale:

rename rinominerà i file specificati sostituendo il primo occorrenza di...

Farà felicemente la cosa sbagliata con nomi di file come c.txt.parser.y .

Ecco una soluzione usando find e bash :

find -type f -name '*.txt' | while read f; do mv "$f" "${f%.txt}"; done

Tieni presente che questo si interromperà se un nome file contiene una nuova riga (raro, ma non impossibile).

Se hai GNU find, questa è una soluzione più solida:

find -type f -name '*.txt' -print0 | while read -d $'\0' f; do mv "$f" "${f%.txt}"; done

Io uso questo:

find ./ -name "*.old" -exec sh -c 'mv $0 `basename "$0" .old`.new' '{}' \;

La versione Perl di rename può rimuovere un'estensione come segue:

rename 's/\.txt$//' *.txt

Questo potrebbe essere combinato con find per creare anche sottocartelle.


Linux
  1. Attendere il completamento del download di più file?

  2. Come rinominare più file contemporaneamente in Linux

  3. KRename – Un potente rinominatore di file batch per Linux

  4. Usa Trova e trova per cercare file in Linux

  5. Come rinominare più file insieme in Linux usando 3 metodi

Come rinominare uno o più file in Linux

8 metodi per rinominare più file contemporaneamente in Linux

Come trovare file basati su timestamp in Linux

Come trovare i file modificati nelle ultime 24 ore in Linux

Come trovare file duplicati in Linux e rimuoverli

Linux Rinomina estensione file multipli