用下划线替换空格并制作小写 - 文件名

时间:2014-10-05 22:12:18

标签: linux bash ubuntu

我正在重命名文件和目录。基本上,我想要做的就是去除空格并用下划线替换它们,最后制作小写字母。我可以一次执行一个命令:$ rename "s/ /_/g" *,然后是小写命令。但我试图在一条线上完成这一切。下面我能够完成的是删除空格并替换为_,但它不会使小写。怎么样?

find /temp/ -depth -name "* *" -execdir rename 's/ /_/g; s,,?; ‘

原始文件名:

test FILE   .txt

结果:(如果末尾有空格,请取出)

test_file.txt

2 个答案:

答案 0 :(得分:3)

rename 's/ +\././; y/A-Z /a-z_/'

或者与find结合使用:

find /temp/ -depth -name "* *" -exec rename 's/ +\././; y/A-Z /a-z_/' {} +

要仅定位文件,而不是目录,请添加-type f

find /temp/ -depth -name "* *" -type f -exec rename 's/ +\././; y/A-Z /a-z_/' {} +

缩短名称

  

是否可以使用最后三个字符重命名文件   原始文件,例如从big Dog.txt到dog.txt?

是。使用此rename命令:

rename 's/ +\././; y/A-Z /a-z_/; s/[^.]*([^.]{3})/$1/'

答案 1 :(得分:0)

试试这一行:
echo "test FILE .txt" | tr A-Z a-z | tr -s ' ' | tr ' ' ''| sed 's/././'