如何使用find和awk以及正则表达式将大写更改为小写

时间:2013-04-11 07:52:03

标签: regex awk find

我需要更改给定文件夹中的所有文件名。如果大写,则需要将其更改为_lowercase,但第一个始终为小写。例如:
/folder/FileNameOneTwo.txt -> /folder/file_name_one_two.txt

无需保存文件名,只需打印到控制台即可。 代码:

find $1 -type f -print | awk '
BEGIN {
FS = "/"; } 
{ 
split($NF,nazwa,".");
}
{
if(nazwa[1] ~ /([[:upper:]])[[:alnum:]]*/ ){

gsub(/[A-Z]/,"_&");
sub(/_/,"");
print tolower($nazwa[1])
}
}
' 

1 个答案:

答案 0 :(得分:1)

$ ls -1
FileNameOneTwo.txt

$ find -maxdepth 1 -type f -exec basename {} \; | sed 's/[A-Z]/_&/g2;s/.*/\L&/'
file_name_one_two.txt

使用awk

awk '{gsub(/[[:upper:]]/,"_&");sub(/^_/,"");print tolower($0)}'