我撰寫了一個腳本,用于洗掉單個檔案夾/檔案名中的空格。我想讓它作業,以便它洗掉腳本存在的目錄中檔案夾/檔案名中的所有空格。
我的腳本:
#!/bin/bash
var=$(ls | grep " ")
test=$(echo $var | sed 's/ //')
mv "$var" $test
它是如何作業的


謝謝你的幫忙!
uj5u.com熱心網友回復:
試試這個
ls | grep " " | while read file_name
do
mv "$file_name" "$(echo $file_name | sed -E 's/ //g')"
done
sed -E以便您可以使用一些簡單的正則運算式,/ /因此它可以在多個連續空格的情況下作業,例如 . 并/g因此它的每一個事件代替如foo baa .txt 。
uj5u.com熱心網友回復:
像這樣的事情可能會奏效:
for f in * ; do
if [[ "$f" =~ \ ]] ; then
mv "$f" "${f// /_}"
fi
done
說明:
for f in * ; do
回圈遍歷目錄中的所有檔案名。它沒有ls使決議ls一個壞主意的輸出的怪癖。
if [[ "$f" =~ \ ]] ; then
這就是bash模式匹配的方式。這\ 就是模式。您需要用反斜杠轉義空格,否則shell 不會將其識別為模式。
mv "$f" "${f// /_}"
${f// /_}是bash模式替換的方式。該//方法全部替換。語法是${variable//pattern/replacement}用替換來替換變數中的所有模式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/379667.html
上一篇:切割Apache虛擬主機塊
下一篇:如何在Xpath1.0中使用函式
