我有一个子目录目录,其中包含应该是压缩存档文件的子目录。结构如下图所示
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