如何遍历 zip 文件的目录并查找和追加不带 .zip 扩展名的文件

如何遍历 zip 文件的目录并查找和追加不带 .zip 扩展名的文件

我有一个子目录目录,其中包含应该是压缩存档文件的子目录。结构如下图所示

ParentDirectory
|-SubDirectoryA
 |-File Mr X.zip
 |-File Mr. X
|-SubDirectoryB
 |-File Mrs X
 |-File Mrs. L.T.D X

我正在尝试更新没有 .zip 扩展名的文件,以下是预期结果

ParentDirectory
|-SubDirectoryA
 |-File Mr X.zip
 |-File Mr. X.zip
|-SubDirectoryB
 |-File Mrs X.zip
 |-File Mrs. L.T.D X.zip

我有当前的代码,但不确定如何附加扩展。我还意识到下面的代码正在查找前缀变量中出现的句点,但某些文件名中包含句点。以下是我的尝试

for dir in */; do
    (cd "$dir" && for fname in *.*; do
         prefix=${fname%.*}
        [ ! -f "$fname" ] || [ -f "$prefix.zip" ] && continue
         mv -- "$fname" "${fname%}.zip"  
    done)
done

答案1

您可以使用正则表达式过滤掉已压缩的文件。

re="*.zip"

for dir in */; do
    (cd "$dir" && for fname in *; do
         case "${fname}" in
             $re)
                 continue
             ;;
             *)
                 mv -- "$fname" "${fname%}.zip"
             ;;
         esac
    done)
done

相关内容