GNU/Linux >> Znalost Linux >  >> Linux

Jak změnit příponu více souborů?

Chtěl bych změnit příponu souboru z *.txt na *.text . Zkusil jsem použít basename příkaz, ale mám potíže se změnou více než jednoho souboru.

Zde je můj kód:

files=`ls -1 *.txt`

for x in $files
do
    mv $x "`basename $files .txt`.text"
done

Zobrazuje se mi tato chyba:

basename: too many arguments Try basename --help' for more information

Přijatá odpověď:

Přímo z Greg's Wiki:

# Rename all *.txt to *.text
for f in *.txt; do 
    mv -- "$f" "${f%.txt}.text"
done

*.txt je kulový vzor pomocí * jako zástupný znak, který odpovídá libovolnému řetězci. *.txt odpovídá všem názvům souborů končících na „.txt“.

-- označuje konec seznamu možností. Tím se vyhnete problémům s názvy souborů začínajícími pomlčkami.

${f%.txt} je rozšíření parametru, nahrazené hodnotou f proměnná s .txt odstraněno z konce.

Podívejte se také na položku, proč byste neměli analyzovat ls .

Pokud musíte použít basename , vaše syntaxe by byla:

for f in *.txt; do
    mv -- "$f" "$(basename -- "$f" .txt).text"
done

Linux
  1. Jak změnit výchozí prostředí v Linuxu

  2. Jak změnit heslo root mysql

  3. Jak rozdělit jeden textový soubor do více souborů *.txt?

  1. Jak změnit identitu systému Linux

  2. Jak komprimovat více souborů v systému Linux

  3. Jak přejmenovat více souborů pomocí funkce Najít?

  1. Jak najít více řetězců v souborech?

  2. Jak změnit název hostitele?

  3. Jak změnit oprávnění pro jeden soubor?