更改文件夹名称的脚本不起作用
问题描述:
我正在尝试将所有文件夹名称从大写更改为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)}')
+0
你不应该使用陈旧过时的背景,使用这样的括号:'mv“$ i”$(echo $ i | awk'{print tolower($ 0)}')''。你也可以在这里使用document来从这样的变量中获取数据到'awk'中:'mv“$ i”$(awk'{print tolower($ 0)}' 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