Bash 查找大小为零的文件并删除具有不同扩展名的文件

Pau*_*aul 6 bash find

此命令将查找大小为零的文件:

find . -size 0
Run Code Online (Sandbox Code Playgroud)

返回的文件名可能是

filename.001
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种可以删除由此找到的文件的单行文件,以及任何具有相同文件名但具有不同扩展名(非零大小)的文件,因此这些文件也将被删除:

filename.txt
filename.bak
filename.ZZz
Run Code Online (Sandbox Code Playgroud)

aki*_*ira 7

$> find . -size 0 | while read f; do rm "${f%.*}."* ; done
Run Code Online (Sandbox Code Playgroud)

解释:

  1. 查找大小为 0 的所有文件
  2. 将名称通过管道传输到 while 循环
  3. 后缀(扩展)部分的剪切${f%.*}(读man bash
  4. rm 具有相同基数的所有其他文件