我在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/