GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Cara Mengubah Ekstensi Banyak File?

Saya ingin mengubah ekstensi file dari *.txt ke *.text . Saya mencoba menggunakan basename perintah, tetapi saya mengalami masalah saat mengubah lebih dari satu file.

Ini kode saya:

files=`ls -1 *.txt`

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

Saya mendapatkan kesalahan ini:

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

Jawaban yang Diterima:

Langsung dari Wiki Greg:

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

*.txt adalah pola globbing, menggunakan * sebagai wildcard untuk mencocokkan string apa pun. *.txt cocok dengan semua nama file yang diakhiri dengan '.txt'.

-- menandai akhir dari daftar opsi. Ini menghindari masalah dengan nama file yang dimulai dengan tanda hubung.

${f%.txt} adalah perluasan parameter, diganti dengan nilai f variabel dengan .txt dihapus dari akhir.

Lihat juga entri tentang mengapa Anda tidak boleh mengurai ls .

Jika Anda harus menggunakan basename , sintaks Anda adalah:

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

Linux
  1. Bagaimana mengubah bahasa cPanel

  2. Bagaimana mengubah gaya cPanel

  3. Bagaimana Cara Mengubah Nama Host?

  1. Bagaimana mengubah identitas sistem Linux

  2. Cara Membuat Zip Banyak File di Linux

  3. Bagaimana Cara Mengganti Nama Banyak File Menggunakan Find?

  1. Bagaimana Menemukan Banyak String Dalam File??

  2. Bagaimana Cara Mengubah Izin Pada Satu File?

  3. Cara mengubah kata sandi root mysql