Bagaimana saya bisa mengganti nama banyak file menggunakan regex?


20

Saya ingin mengganti nama banyak file di Mac OS X (10.7.2) .. Saya tidak memiliki paket perl untuk renameperintah tersebut.

File saya memiliki nama seperti "T452-102456-0.png" dan saya ingin menghapus bagian "-0". Saya tahu saya bisa melakukan tindakan ini dengan menulis skrip php-cli saya sendiri, tetapi saya ingin mengetahui solusi yang lebih mudah dan lebih cepat.


Bukankah ada kontradiksi logis antara "banyak file pdf" dan "File saya memiliki nama seperti" T452-102456-0.png ""?
manatwork

Oh ... jenis file tidak masalah, tapi itu benar ^^. Saya edit, terima kasih atas komentar Anda =)
Raphaël

Jawaban:


21

Bash atau Ksh bersama dengan mvbisa menyelesaikannya:

for f in *.png; do mv -n "$f" "${f/-0}"; done

Jika nama file mungkin memiliki "0" setelah tanda hubung pertama juga dan "-0" selalu di depan titik, Anda mungkin ingin memasukkan titik itu juga dalam ekspresi:

for f in *.png; do mv -n "$f" "${f/-0./.}"; done

Tetapi karena aturan penggantian nama itu sederhana, jika Anda memiliki renamedari paket util-linux , itu juga akan berlaku:

rename '-0.' '.' *.png

ini bekerja dengan sempurna. Terima kasih banyak =)
Raphaël

3

Metode sederhana: File dalam direktori saat ini saja

Dengan zsh:

autoload zmv
zmv '(*)-0(.png)' '$1$2'

Dengan kerang lain:

for x in *-0.png; do mv -- "$x" "${x%-0.*}.png"; done


Metode yang disempurnakan: File dalam direktori saat ini dan / atau subdirektori

Dengan zsh:

zmv '(**/)(*)-0(.png)' '$1$2$3'

Dengan ksh93:

set -o globstar
for x in **/*-0.png; do mv -- "$x" "${x%-0.*}.png"; done

Dengan bash ≥4, seperti di atas, tetapi gunakan shopt -s globstaralih-alih setperintah.

Dengan kerang lain:

find -name '*-0.png' -exec sh -c 'for x; do mv -- "$x" "${x%-0.*}.png"; done' _ {} +

alasan bagus lainnya untuk menginstal zsh:) .... zmv
danidee


0

Jika Anda memiliki mmvpaket:

mmv '*-0.png' '#1.png'

Seperti (versi terbaru) rename, ini akan sangat berhati-hati untuk menghindari menimpa file yang ada.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.