0

我需要更改给定文件夹中的所有文件名。如果有大写,则需要将其更改为 _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])
}
}
' 
4

1 回答 1

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)}'
于 2013-04-11T08:32:31.823 回答