GNU/Linux >> Belajar Linux >  >> Linux

Batch mengganti nama file di baris perintah dan Xargs

Ini juga dapat dilakukan dengan xargs dan sed untuk mengubah ekstensi file.

ls | grep \.png$ | sed 'p;s/\.png/\.jpg/' | xargs -n2 mv

Anda dapat mencetak nama file asli beserta nama file yang Anda inginkan. Kemudian minta xargs menggunakan kedua argumen tersebut dalam perintah pindah. Untuk one-liner, saya juga menambahkan grep untuk memfilter apa pun yang bukan file *.png.


bagaimana cara mengganti nama file sehingga saya hanya dapat memiliki satu ekstensi.

cd dir/with/messedup/files

for file in *.png.jpg; do
  mv "$file" "${file%.png.jpg}.jpg"
done

di masa mendatang, dengan menggunakan xargs, bagaimana cara mengubah ekstensi file yang mirip dengan perintah kedua?

Sepengetahuan saya, itu tidak bisa dilakukan. Cara terbaik untuk melakukannya adalah dengan menggunakan for-loop dengan substitusi parameter seperti di atas:

for file in *.png; do
  convert "$file" -resize "${file%.png}.jpg"
done

Jika Anda memiliki file di subdirektori yang ingin dikonversi, Anda dapat mem-pipe find ke while read lingkaran:

find . -type f -name '*.png' |
while read file; do
  convert "$file" -resize "${file%.png}.jpg"
done

CATATAN: Biasanya dianggap ide yang buruk untuk menggunakan hasil ls dalam skrip shell. Meskipun contoh Anda mungkin berfungsi dengan baik, ada banyak contoh yang tidak. Misalnya, jika nama file Anda memiliki baris baru di dalamnya (yang memungkinkan unix), ls mungkin tidak akan lolos dari mereka untuk Anda. (Itu sebenarnya tergantung pada implementasi Anda, yang merupakan alasan lain untuk tidak menggunakan ls dalam skrip; perilakunya sangat bervariasi dari satu kotak ke kotak berikutnya.) Anda akan mendapatkan hasil yang lebih konsisten jika Anda menggunakan find dalam pengulangan sementara-baca atau globbing file (mis. *.png ) dalam perulangan for.


Linux
  1. Temukan file dan direktori di Linux dengan perintah find

  2. Salin dan tempel di baris perintah Linux dengan xclip

  3. Cara Memisahkan Dan Menggabungkan File Dari Baris Perintah Di Linux

  1. Cara Mengubah Izin dan Pemilik melalui Command Line

  2. Cara Menghapus File dan Direktori di Linux dari Command Line

  3. Cara Menyembunyikan File Dan Folder di File Manager Tanpa Mengganti Nama

  1. Metamorphose 2 – Batch Ganti Nama File dan Folder Anda di Linux

  2. Buat file dengan menggunakan baris perintah di Linux

  3. 11 Contoh Perintah Linux diff3 (Bandingkan 3 File Baris demi Baris)