如何迭代给定目录中的文件并检查文件是否存在?

如何迭代给定目录中的文件并检查文件是否存在?

这是给定目录中的文件列表;

a_object_1.0.zip
file_name_conf_1.1.zip
anim_dup_1.1.zip

迭代给定目录中的文件,并检查文件是否与文件列表中的文件模式匹配,解压缩并使用某个前缀重命名每个文件( cx_a_object_1.0.zip, cx_file_name_conf_1.1.zip, anim_anim_dup_1.1.zip)

答案1

#!/bin/bash
for szFile in /var/tmp/*.zip;
do 
  unzip "$szFile";
  mv "$szFile" "Prefix_"$(basename -- "$szFile")
done

将要:

  • 迭代所有zip文件/var/tmp
  • 提取它们
  • 添加前缀
  • 将它们移动到当前目录。

答案2

这是一个使用 find 的示例。

find somedir/ -type f -name 'some.zip' -exec bash -c 'name=$1; echo unzip "$name" -d "${name%/*}"; echo  mv "$name" "${name%%/*}/cx_c_${name##*/}"' _ {} \;

echo当您对结果满意时删除

或者创建一个带有本地参数的函数,并将文件名作为参数传递给该函数,如下所示:

cfind() {
 local name=$1
 find somedir/ -type f -name "$name" -exec bash -c 'name=$1; echo unzip "$name" -d "${name%/*}"; echo  mv "$name" "${name%%/*}/cx_c_${name##*/}"' _ {} \;
    }

称呼它为

cfind myfilename.zip

相关内容