如何把所有 有whitespace的檔名 改成沒有的? - Linux

Table of Contents

大家好,
我的目錄底下有很多如下的檔名:

\ \ 1
\ \ 2
\ 10
\ 20
等等.

我想把他改成
1
2
10
20

請問有沒有什麼簡單的方法?

我目前的作法是

for FILE in $(find . -type f); do mv "$FILE $(echo $FILE | tr -d '\ ')"; done
但出現的結果是:
mv ./ ./
mv 1 1
而不是我想要的
mv ./\ \ 1 ./1

我猜測是因為$(find . -type f)裡裝的是
./ 1 ./ 10 ./ 2 ./ 20
(這是echo $(find . -type f)的結果)
也就是說檔名的空白變成分隔字元了?

我應該怎麼辦?

--

All Comments

Robert avatarRobert2008-10-01
find . -type f | while read FILE; do mv "$FILE" \
Tracy avatarTracy2008-10-03
"$(tr -d \ <<< $FILE )"; done
Hedwig avatarHedwig2008-10-07
謝謝. 請問<<<是甚麼意思呢?
Mason avatarMason2008-10-08
<<< here string (man bash)