在缺少字符串时将字符串附加到文件名

时间:2014-03-24 15:01:08

标签: linux bash grep

我尝试将字符串附加到文件名中,每次都缺少该字符串。

示例:

我有

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选项,但是在检查这个人时,它说这是为了沉默......

任何建议都会有所帮助。

最佳

1 个答案:

答案 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 + extensionExtract filename and extension in bash中的进一步参考)。

注意

[[ $file != *codegroup* ]] && mv $file ${file%.*}codegroup.${file##*.}

与:

相同
if [[ $file != *codegroup* ]]; then
  mv $file ${file%.*}codegroup.${file##*.}
fi