我正在尝试将所有文件夹名称从大写更改为小写。不幸的是我无法实现它。我知道如何更改文件夹名称,但我的管道和脚本不起作用。
我让这个脚本起作用。
#!/bin/bash
for i in *;
do mv "$i" echo $i | awk '{print tolower($0)}'
done
我知道当我mv "$i" "Z$i"
时,它会将Z
放在其他文件夹名称的前面。
答案 0 :(得分:1)
使用一些命令替换技术
#!/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
将第一个列表中的每个元素与第二个列表中的相应元素进行翻译。
答案 1 :(得分:1)
而不是
mv "$i" echo $i | awk '{print tolower($0)}'
尝试:
mv "$i" `echo $i | awk '{print tolower($0)}'`
或
mv "$i" $(echo $i | awk '{print tolower($0)}')
答案 2 :(得分:1)
我认为使用任何外部实用程序有点矫枉过正。在较新的bash中,您可以使用以下内容:
for i in *; do mv "$i" "${i,,?}"; done
如果目标文件存在,我还建议使用-i
选项以交互方式询问。