我正在重命名文件和目录。基本上,我想要做的就是去除空格并用下划线替换它们,最后制作小写字母。我可以一次执行一个命令:$ rename "s/ /_/g" *
,然后是小写命令。但我试图在一条线上完成这一切。下面我能够完成的是删除空格并替换为_
,但它不会使小写。怎么样?
find /temp/ -depth -name "* *" -execdir rename 's/ /_/g; s,,?; ‘
原始文件名:
test FILE .txt
结果:(如果末尾有空格,请取出)
test_file.txt
答案 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/././'