GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara mengganti nama semua file dengan karakter dan spasi khusus dalam direktori?

-n bendera adalah untuk

--no-act

Tanpa Tindakan:tampilkan file apa yang akan diganti namanya.

Jadi wajar jika tidak ada perubahan.

Mengenai perintah Anda, ini berfungsi untuk saya:

$ touch "a @ test"
$ ls
a @ test
$ rename -n 's/ |\$|@/_/g' *
a @ test renamed as a___test

Mungkin tergantung pada shell Anda, Anda harus keluar dari |

$ rename -n 's/ \|\$\|@/_/g' *

Atau Anda dapat menggunakan […] notasi untuk mengelompokkan karakter:

$ rename -n 's/[ @\$]/_/g' *

Anda dapat mencoba seperti ini:

for file in ./*Block*                                       
do echo mv "$file" "${file//[ ()@$]/_}"
done

Jika Anda puas dengan hasilnya, hapus echo sebelum mv untuk benar-benar mengganti nama file.


mencari skrip yang bagus untuk menghapus karakter khusus serta karakter khusus Jerman, menggantinya dengan yang universal agar tidak menghapus informasi yang berguna. Saya telah memperbarui versi skrip terakhir yang memiliki beberapa masalah kecil yang mengakibatkan:

#!/bin/bash

for file in ./*
do
  infile=`echo "${file:2}"|sed  \
         -e 's|"\"|"\\"|g' \
         -e 's| |\ |g' -e 's|!|\!|g' \
         -e 's|@|\@|g' -e 's|*|\*|g' \
         -e 's|&|\&|g' -e 's|]|\]|g' \
         -e 's|}|\}|g' -e 's|"|\"|g' \
         -e 's|,|\,|g' -e 's|?|\?|g' \
         -e 's|=|\=|g'  `
  outfileNOSPECIALS=`echo "${file:2}"|sed -e 's|[^A-Za-z0-9._-]|_|g'`
  outfileNOoe=`echo $outfileNOSPECIALS| sed -e 's|ö|oe|g'`
  outfileNOae=`echo $outfileNOoe| sed -e 's|ä|ae|g'`
  outfileNOue=`echo $outfileNOae| sed -e 's|ü|ue|g'`
  outfileNOOE=`echo $outfileNOue| sed -e 's|Ö|OE|g'`
  outfileNOAE=`echo $outfileNOOE| sed -e 's|Ä|AE|g'`
  outfileNOUE=`echo $outfileNOAE| sed -e 's|Ü|UE|g'`
  outfileNOss=`echo $outfileNOUE| sed -e 's|ß|ss|g'`
  outfile=${outfileNOss}
  if [ "$infile" != "${outfile}" ]
  then
        echo "filename changed for " $infile " in " $outfile
        mv "$infile" ${outfile}
  fi
done

exit

menghasilkan:

@don_crissti:Dia melakukan hokus-pokus dengan infile karena linux akan memiliki masalah sendiri dalam menangani karakter khusus saat memindahkan nama file.


Linux
  1. Cara Memanipulasi Nama File yang Memiliki Spasi dan Karakter Khusus di Linux

  2. Ganti Nama Semua File dan Nama Direktori menjadi Huruf Kecil di Linux

  3. Bagaimana Cara Menghapus Semua File Dengan Ekstensi Tertentu Di Folder Tertentu?

  1. Menggunakan find dan tar dengan file dengan karakter khusus pada namanya

  2. Bagaimana cara mengganti nama file secara massal dengan penyandian yang tidak valid atau mengganti karakter yang disandikan yang tidak valid secara massal?

  3. Bisakah saya mengganti nama file dalam direktori dengan Vim?

  1. Cara Menemukan Jumlah File dalam Direktori dan Subdirektori

  2. Cara Mengubah Kepemilikan File dan Direktori dengan Perintah chown

  3. Cara Menemukan Semua File dengan Ukuran File Nol (0) Bytes di Direktori Secara Rekursif