Saya memiliki dua baris berikut dalam skrip shell dan bertanya-tanya apakah ada cara untuk menyingkatnya menjadi satu menggunakan sed. Saya tidak yakin apakah ada wildcard atau apa pun yang bisa menggantikan kata-kata Glitch dan Chill di ini, tetapi jika ada, saya ingin tahu. Yang paling penting adalah menghilangkan semua yang ada dalam tanda kurung aneh yang Anda lihat dan tidak ada yang tersentuh.
find . -type f -name '【Chill*' -execdir bash -c 'for file in "$@"; do new=$(echo "$file" | sed -r 's/【Chill.*】//'); mv -v "$file" "$new"; done' _ {} +
find . -type f -name '【Glitch*' -execdir bash -c 'for file in "$@"; do new=$(echo "$file" | sed -r 's/【Glitch.*】//'); mv -v "$file" "$new"; done' _ {} +
【】
? ( BRAKET LENTIKULER HITAM KIRI dan BRAKET LENTIKULER HITAM KANAN .)Jawaban:
Tahukah Anda bahwa Anda dapat melakukan semuanya dengan menggunakan nama Perl:
sumber
-n
opsi untuk melakukan penggantian nama yang sebenarnya.sumber
Jawaban @Cyrus baik, tetapi akan lebih baik tanpanya
sed
, dan denganfor
loop yang disederhanakan :sumber