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