我正在嘗試將所有文件夾名稱從大寫更改爲lowercase。不幸的是我不能做到這一點。我知道如何改變文件夾名稱,但我的管道和腳本不起作用。更改文件夾名稱的腳本不起作用
我使這個腳本工作。
#!/bin/bash
for i in *;
do mv "$i" echo $i | awk '{print tolower($0)}'
done
我知道,當我做mv "$i" "Z$i"
它會把Z
在其他文件夾名稱的前面。
我正在嘗試將所有文件夾名稱從大寫更改爲lowercase。不幸的是我不能做到這一點。我知道如何改變文件夾名稱,但我的管道和腳本不起作用。更改文件夾名稱的腳本不起作用
我使這個腳本工作。
#!/bin/bash
for i in *;
do mv "$i" echo $i | awk '{print tolower($0)}'
done
我知道,當我做mv "$i" "Z$i"
它會把Z
在其他文件夾名稱的前面。
而不是
mv "$i" echo $i | awk '{print tolower($0)}'
嘗試:
mv "$i" `echo $i | awk '{print tolower($0)}'`
或
mv "$i" $(echo $i | awk '{print tolower($0)}')
你不應該使用陳舊過時的背景,使用這樣的括號:'mv「$ i」$(echo $ i | awk'{print tolower($ 0)}')''。你也可以在這裏使用document來從這樣的變量中獲取數據到'awk'中:'mv「$ i」$(awk'{print tolower($ 0)}'<<< $ i)' – Jotne 2014-10-26 21:46:03
使用某些命令替代技術
#!/bin/bash
for i in *;
do
mv "$i" $(echo $i | awk '{print tolower($0)}')
done
或
#!/bin/bash
for i in *;
do
mv "$i" `echo $i | awk '{print tolower($0)}'`
done
你也可以使用翻譯,tr
執行相同的功能。
#!/bin/bash
for i in *;
do
mv "$i" `echo $i | tr A-Z a-z'`
done
的tr
翻譯與在第二列表中相應元素的第一列表的每個元素。
我認爲使用任何外部工具的這個有點矯枉過正。在新的bash你可以使用這樣的事情:
for i in *; do mv "$i" "${i,,?}"; done
我也建議使用-i
選項詢問交互如果目標文件存在移動。
您需要改變大小寫的代碼反引號。 – Yetti99 2014-10-26 16:16:22
反引號?你可以示例 – user3402584 2014-10-26 16:17:22