Umbenennen all Dateien a Verzeechnesnimm op Klengbuchstaben am Linux


An eisem fréieren Artikel hu mir beschriwwen wéi d'Zuel vun de Dateien an Ënnerverzeechnungen an engem bestëmmte Verzeichnis zielen. Dëse Guide wäert Iech weisen wéi Dir all Dateien a Verzeichnissernimm op Klengbuchstaben an Linux ëmbenannt.

Et gi verschidde Weeër fir dëst z'erreechen, awer mir erklären zwee vun den effizientesten an zouverlässegsten Methoden. Fir den Zweck vun dësem Guide hu mir e Verzeechnes mam Numm Dateien benotzt deen déi folgend Struktur huet:

# find Files -depth

1. Benotzt fannen, xargs an ëmbenennen Kommandoen Zesummen

Fannt Utility fir all Dateien oder Ënnerverzeechnungen an engem bestëmmte Verzeechnes op kleng Buschtawen ëmbenennen wéi follegt:

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

Erklärung vun Optiounen am uewe genannte Kommando benotzt.

  • -depth - lëscht den Inhalt vun all Verzeichnis virum Verzeechnes selwer.
  • -n 1 – instruéiert xargs fir maximal een Argument pro Kommandozeil vum Find Output ze benotzen.

Probeoutput nom Ëmbenennung vun Dateien an Ënnerverzeechnunge fir kleng Buschtawen am Dateien Verzeechnes.

Eng aner alternativ Manéier mat de mv Kommandoen an engem Skript wéi hei ënnen erkläert.

2. Benotzt fannen an mv Kommandoen am Shell Skript

Erstellt als éischt Äert Skript (Dir kënnt et alles nennen wat Dir wëllt):

$ cd ~/bin
$ vi rename-files.sh

Füügt dann de Code hei drënner derbäi.

#!/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

Späichert a schléisst d'Datei, da maacht de Skript ausféierbar a lafe se:

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

Dir kënnt och gären dës folgend Zesummenhang Artikelen liesen.

  1. Erklärung vu \Alles ass e Fichier an Aarte vu Dateien am Linux
  2. fswatch - Iwwerwaacht Dateien a Verzeechnes Ännerungen oder Ännerungen am Linux
  3. Fasd - E Commandline Tool dat séier Zougang zu Dateien an Verzeichnungen ubitt
  4. FSlint - Wéi fannt Dir Duplikatdateien an Linux

An dësem Guide hu mir Iech erkläert wéi Dir all Dateien a Verzeichnisser op kleng Buschtawen an Linux ëmbenannt. Wann Dir Feeler kritt, schéckt eis w.e.g. iwwer de Feedbackformular hei ënnen. Dir kënnt eis och all aner Methode bidden fir datselwecht ze maachen.