ในเชลล์ใด ๆ คุณสามารถวนซ้ำไฟล์ที่ชื่อมีช่องว่าง การแทนที่ช่องว่างด้วยการขีดล่างทำได้ง่ายใน bash, ksh และ zsh ด้วย${VARIABLE//PATTERN/REPLACEMENT}โครงสร้าง
for x in *" "*; do
mv -- "$x" "${x// /_}"
done
บน Debian, Ubuntu และอนุพันธ์คุณสามารถใช้ Perl rename(ดิสทริบิวชันอื่น ๆ จัดส่งโปรแกรมอื่นเป็นrename, และโปรแกรมนั้นไม่มีประโยชน์ที่นี่)
rename 's/ /_/g' *
โซลูชั่น zsh บังคับ:
autoload zmv
zmv '(*)' '${1// /_}'
โซลูชัน POSIX ที่จำเป็น:
for x in *" "*; do
y=$(printf %sa "$x" | tr " " "_")
mv -- "$x" "${y%a}"
done
find -maxdepth 1เพื่อทำสิ่งที่ OP ถามเกี่ยวกับการดำเนินงานในโฟลเดอร์ปัจจุบัน