GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Mengganti Satu Char Dengan Yang Lain Di Semua Nama File Direktori Saat Ini?

Bagaimana Anda mengganti nama semua file/subdir di folder saat ini?

Katakanlah, saya memiliki banyak file dan subdir dengan spasi dan saya ingin mengganti semua spasi dengan garis bawah.

File 1
File 2
File 3
Dir 1
Dir 3

harus diganti namanya menjadi

File_1
File_2
File_3
Dir_1
Dir_3

Jawaban yang Diterima:

Jika Anda juga perlu mengganti nama file di subdirektori, dan find mendukung -execdir predikat, maka Anda dapat melakukan

find /search/path -depth -name '* *' 
    -execdir bash -c 'mv -- "$1" "${1// /_}"' bash {} ;

Terima kasih kepada @glenn jackman karena telah menyarankan -depth opsi untuk find dan membuatku berpikir.

Perhatikan bahwa pada beberapa sistem (termasuk yang GNU/Linux), find mungkin gagal menemukan file yang namanya berisi spasi dan juga urutan byte yang tidak membentuk karakter yang valid (biasanya dengan file media dengan nama dengan karakter non-ASCII yang dikodekan dalam rangkaian karakter yang berbeda dari lokal). Menyetel lokal ke C (seperti dalam LC_ALL=C find... ) akan mengatasi masalah tersebut.


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

  2. Bagaimana Memindahkan Semua File (termasuk Tersembunyi) Dari Satu Direktori Ke Yang Lain?

  3. Cara Mengganti Semua Kemunculan Word di Semua File di Baris Perintah Linux

  1. Bagaimana menemukan direktori terbesar atau file terbesar?

  2. Bagaimana cara mengganti semua isi dari satu folder dengan yang lain

  3. Temukan direktori dengan semua file di dalamnya lebih tua dari X?

  1. Bagaimana Menemukan Semua File Yang Berhubungan Dengan Perangkat Lunak?

  2. Bagaimana menemukan semua file/folder dengan izin 777 di Linux?

  3. Bagaimana cara menemukan semua file dan direktori yang dapat ditulis oleh pengguna tertentu?