Sam*_*007 35 bash filenames rename
我想在文件名的末尾但在扩展名之前添加文本。现在我正在尝试,
for f in *.shp; do echo $f_poly; done
输出是,
Quercus_acutifolia.shp_poly
Quercus_agrifolia.shp_poly
Quercus_corrugata.shp_poly
Quercus_cortesii.shp_poly
Quercus_costaricensis.shp_poly
Quercus_havardii.shp_poly
Quercus_hemisphaerica.shp_poly
Quercus_kelloggii.shp_poly
Quercus_knoblochii.shp_poly
Quercus_laceyi.shp_poly
Run Code Online (Sandbox Code Playgroud)
我希望它是,
Quercus_acutifolia_poly.shp
Quercus_agrifolia_poly.shp
Quercus_corrugata_poly.shp
Quercus_cortesii_poly.shp
Quercus_costaricensis_poly.shp
Quercus_havardii_poly.shp
Quercus_hemisphaerica_poly.shp
Quercus_kelloggii_poly.shp
Quercus_knoblochii_poly.shp
Quercus_laceyi_poly.shp
Run Code Online (Sandbox Code Playgroud)
jw0*_*013 37
for f in *.shp; do printf '%s\n' "${f%.shp}_poly.shp"; done
Run Code Online (Sandbox Code Playgroud)
有时会安装一个名为“重命名”的工具。
rename 's/\.shp$/_poly.shp/' *shp
Run Code Online (Sandbox Code Playgroud)
它可能不便携,但很容易使用。
由于问题是bash不需要外部实用程序,因为您可以使用bash 正则表达式:
for f in *.shp\ndo\n mv -v "${f}" "${f%.*}_MYSUFFIX.${f##*.}"\ndone\nRun Code Online (Sandbox Code Playgroud)\n\n\n\xe2\x9d\x97\xef\xb8\x8f警告:
\nfor f in *.ext不可靠,因为它会破坏包含空格、引号或其他保留字符的文件名。一种故障安全方法是使用类似find . -iname \'*.shp\' -exec sh -c \'mv -v "${1}" "${1%.*}_MYSUFFIX.${f##*.}"\' _ {} \\;. 如果不需要递归遍历则添加-maxdepth 1
用这个:
for file in *.shp; do echo $(basename $file .shp)_poly.shp; done
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
68511 次 |
| 最近记录: |