从重命名脚本中排除文件类型

时间:2018-03-08 15:55:22

标签: bash file rename

我需要从下面的脚本中排除单个文件类型。有人可以告诉我添加和排除具有.partial扩展名的文件的内容吗?

#!/bin/bash
cd /data/user1/upload
thetime=`date +%Y-%m-%d_%H:%M:%S` #
for i in *.*
do
        extn=${i##*.} # save the extension of the file
                mv "$i" "${i%.*}"$(date "+_%Y-%m-%d_%H:%M:%S.${extn}")
done
mv *.* /test/user1

3 个答案:

答案 0 :(得分:3)

如果您先启用shopt -s extglob,则可以使用!(*.partial)获取所有非.partial文件。

答案 1 :(得分:1)

您可以使用正则表达式查找和搜索文件,而不是查找当前路径中的所有文件:

find . ! -name "*.partial"

这将为您提供所有与" * .part"匹配的文件。正则表达式。

答案 2 :(得分:1)

你可以使用一个检查文件名扩展名的guard子句在循环中进行过滤,例如:

for i in *.*
do
    [[ "$i" =~ \.partial$ ]] && continue
    ...
done

i的值以.partial结尾时,它会转到下一个元素。

在您的特定情况下,由于您已经提取了扩展程序值,因此可以直接对其进行比较[[ "$extn" == "partial" ]]