我在Linux机器上的目录中有重复的文件,列出如下:
ltulikowski@lukasz-pc:~$ ls -1
abcd
abcd.1
abcd.2
abdc
abdc.1
acbd
我想删除所有不单身的文件,因此我应该拥有:
ltulikowski@lukasz-pc:~$ ls -1
acbd
答案 0 :(得分:1)
这是一种方法
for f in *.[0-9]; do rm ${f%.*}*; done
可能会出现异常,因为某些文件将被删除多次(在您的示例中为abcd)。如果版本始终以.1开头,则可以限制为匹配。
答案 1 :(得分:1)
该函数使用 \ textglob ,因此在执行之前,设置 \ textglob :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
答案 2 :(得分:0)
您可以使用:
numArray[0] = doubleIt(a);
numArray[1] = doubleIt(b);
<pre>
out.println("<html><body>");
out.println("<h1>My HTML Body</h1>");
out.println("</html></body>");
</pre>
,while read -r f; do
rm "$f"*
done < <(printf "%s\n" * | cut -d. -f1 | uniq -d)
和printf
用于获取当前目录中的重复条目(位于点之前)。
答案 3 :(得分:-3)
命令
rm *.*
如果我理解正确的话,应该这样做吗
使用ls
确认第一个