更改文件夹名称的脚本不起作用

时间:2014-10-26 16:06:54

标签: bash shell awk console

我正在尝试将所有文​​件夹名称从大写更改为小写。不幸的是我无法实现它。我知道如何更改文件夹名称,但我的管道和脚本不起作用。

我让这个脚本起作用。

#!/bin/bash
for i in *;
do mv "$i" echo $i | awk '{print tolower($0)}'
done

我知道当我mv "$i" "Z$i"时,它会将Z放在其他文件夹名称的前面。

3 个答案:

答案 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)

我认为使用任何外部实用程序有点矫枉过正。在较新的中,您可以使用以下内容:

for i in *; do mv "$i" "${i,,?}"; done

如果目标文件存在,我还建议使用-i选项以交互方式询问。