Gi nytt navn til alle filer og katalognavn til små bokstaver i Linux


I vår forrige artikkel har vi beskrevet hvordan du teller antall filer og underkataloger i en gitt katalog. Denne veiledningen viser deg hvordan du endrer navn på alle filer og kataloger til små bokstaver i Linux.

Les også: Hvordan finne ut de beste katalogene og filene (diskplass) i Linux

Det er flere måter å oppnå dette på, men vi vil forklare to av de mest effektive og pålitelige metodene. For formålet med denne veiledningen har vi brukt en katalog kalt Filer som har følgende struktur:

find Files -depth

1. Bruke find, xargs og rename Commands Together

rename er et enkelt kommandolinjeverktøy for å gi nytt navn til flere filer samtidig i Linux. Du kan bruke det sammen med finn-verktøyet for å endre navn på alle filer eller underkataloger i en bestemt katalog til små bokstaver som følger:

find Files -depth | xargs -n 1 rename -v 's/(.*)\/([^\/]*)/$1\/\L$2/' {} \;

Forklaring av alternativer brukt i kommandoen ovenfor.

  • -depth – viser hver katalogs innhold før selve katalogen.
  • -n 1 – instruerer xargs til å bruke maksimalt ett argument per kommandolinje fra finn-utdata.

Eksempelutgang etter å gi nytt navn til filer og underkataloger til små bokstaver i katalogen Filer.

En annen alternativ måte å bruke find- og mv-kommandoene i et skript som forklart nedenfor.

2. Bruke find og mv kommandoer i Shell Script

Lag først skriptet ditt (du kan kalle det hva du foretrekker):

cd ~/bin
vi rename-files.sh

Legg deretter til koden nedenfor i den.

#!/bin/bash
#print usage 
if [ -z $1 ];then
        echo "Usage :$(basename $0) parent-directory"
        exit 1
fi

#process all subdirectories and files in parent directory
all="$(find $1 -depth)"



for name in ${all}; do
        #set new name in lower case for files and directories
        new_name="$(dirname "${name}")/$(basename "${name}" | tr '[A-Z]' '[a-z]')"

        #check if new name already exists
        if [ "${name}" != "${new_name}" ]; then
                [ ! -e "${new_name}" ] && mv -T "${name}" "${new_name}"; echo "${name} was renamed to ${new_name}" || echo "${name} wasn't renamed!"
        fi
done

echo
echo
#list directories and file new names in lowercase
echo "Directories and files with new names in lowercase letters"
find $(echo $1 | tr 'A-Z' 'a-z') -depth

exit 0

Lagre og lukk filen, gjør deretter skriptet kjørbart og kjør det:

chmod +x rename-files.sh
rename-files.sh Files     #Specify Directory Name

Du kan også like å lese disse følgende relaterte artiklene.

  1. Forklaring av "Alt er en fil" og filtyper i Linux
  2. fswatch – Overvåker filer og katalogendringer eller modifikasjoner i Linux
  3. Fasd – Et kommandolinjeverktøy som gir rask tilgang til filer og kataloger
  4. FSlint - Hvordan finne og fjerne dupliserte filer i Linux

I denne veiledningen forklarte vi deg hvordan du endrer navn på alle filer og kataloger til små bokstaver i Linux. Hvis du får noen feil, vennligst kontakt oss via tilbakemeldingsskjemaet nedenfor. Du kan også tilby oss andre metoder for å gjøre det samme.