我尝试将字符串附加到文件名中,每次都缺少该字符串。
示例:
我有
idbank.xls
idbank.xls
idbank.xls
我正在寻找字符串
codegroup
由于该字符串不存在,我将其附加到扩展名之前的文件名。 所需的输出将是
idbankxxxcodeGroupea1111.xls
idbankxxxcodeGroupea1111.xls
idbankxxxcodeGroupea1111.xls
我制作了这个脚本(见下文),但它无法正常工作
for file in idbank*.xls; do
if $(ls | grep -v 'codeGroupe' $file); then
printf '%s\n' "${f%.xls}codeGroupea1111.xls"
fi; done
grep -v是检查字符串是否在这里。我在另一篇文章中读到你可以使用-q选项,但是在检查这个人时,它说这是为了沉默......
任何建议都会有所帮助。
最佳
答案 0 :(得分:1)
这可以做到:
for file in idbank*xls
do
[[ $file != *codegroup* ]] && mv $file ${file%.*}codegroup.${file##*.}
done
for file
正在使用。[[ $file != *codegroup* ]]
检查文件名是否包含codegroup
。mv $file ${var%.*}codegroup.${var##*.}
:它会将文件重命名为filename_without_extension
+ codgroup
+ extension
(Extract filename and extension in bash中的进一步参考)。 注意
[[ $file != *codegroup* ]] && mv $file ${file%.*}codegroup.${file##*.}
与:
相同if [[ $file != *codegroup* ]]; then
mv $file ${file%.*}codegroup.${file##*.}
fi