GNU/Linux >> Belajar Linux >  >> Linux

Ubah ekstensi file secara rekursif di Bash

Tidak ada solusi yang disarankan yang bekerja untuk saya pada instalasi baru debian 14. Ini seharusnya bekerja pada semua Posix/MacOS

find ./ -depth -name "*.t1" -exec sh -c 'mv "$1" "${1%.t1}.t2"' _ {} \;

Semua kredit ke:https://askubuntu.com/questions/35922/how-do-i-change-extension-of-multiple-files-recursively-from-the-command-line


Jika versi bash Anda mendukung globstar opsi (versi 4 atau lebih baru):

shopt -s globstar
for f in **/*.t1; do
    mv "$f" "${f%.t1}.t2"
done 

Gunakan:

find . -name "*.t1" -exec bash -c 'mv "$1" "${1%.t1}".t2' - '{}' +

Jika Anda memiliki rename tersedia lalu gunakan satu dari ini:

find . -name '*.t1' -exec rename .t1 .t2 {} +
find . -name "*.t1" -exec rename 's/\.t1$/.t2/' '{}' +

Saya akan melakukan cara ini di bash :

for i in $(ls *.t1); 
do
    mv "$i" "${i%.t1}.t2" 
done

EDIT:kesalahan saya:ini bukan rekursif, inilah cara saya mengubah nama file secara rekursif:

for i in $(find `pwd` -name "*.t1"); 
do 
    mv "$i" "${i%.t1}.t2"
done

Linux
  1. Cara Menemukan File Di Linux Di Semua Direktori Secara Rekursif

  2. Bash:Penggunaan Prosedural Find Into Select yang aman-spasi?

  3. Temukan File Terbesar Secara Rekursif?

  1. temukan dan salin file menggunakan Bash

  2. Bagaimana cara mengubah izin ke pola/ekstensi file tertentu?

  3. Fungsi Bash untuk menemukan pola pencocokan file terbaru

  1. Basa'?

  2. Temukan File Log Firefox?

  3. Linux menemukan nama file dengan string yang diberikan secara rekursif