我在Linux机器上的目录中有重复的文件,其列出如下:

ltulikowski@lukasz-pc:~$ ls -1
abcd
abcd.1
abcd.2
abdc
abdc.1
acbd


我要删除所有文件都不是单一的,因此我应该拥有:

ltulikowski@lukasz-pc:~$ ls -1
acbd

最佳答案

该函数使用extglob,因此在执行之前,请设置extglob:shopt -s extglob

rm_if_dup_exist(){
    arr=()
    for file in *.+([0-9]);do
        base=${file%.*};
        if [[ -e $base ]]; then
            arr+=("$base" "$file")
        fi
    done
    rm -f -- "${arr[@]}"
}


这还将支持.后带有几位数字的文件名,例如abcd.250也可以接受。



输入的用法示例:

$ touch abcd abcd.1 abcd.2 abdc abdc.1 acbd
$ rm_if_dup_exist
$ ls
  acbd




请注意,例如,如果存在abcd.1但不存在abcd,则不会删除abcd.1。

关于linux - 如何删除所有非单一文件的Linux目录?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36069551/

10-13 06:08