删除零长度隐藏文件

删除零长度隐藏文件

编写一个 Bash 脚本,将文件名和目录名作为命令行参数,如果在给定目录下找到该文件并且该文件是零长度文件、.swp 文件(可能是隐藏的)或 .tmp 文件(也许隐藏)。

有人可以提供这个代码吗?

答案1

这会递归地列出目录“目录名称”中的文件,这些文件是常规文件,名称以点开头(隐藏),并且为空

find «directory-name» -type f -name ".*" -empty

答案2

rm这是我认为有意义的回显版本(而不是,更容易测试)。

这个想法是将其分成两部分。首先,测试是否为空并有条件删除。然后,rm选择-f4 个变体。这里是两行 4 个回显,格式很好地显示了空白在文件名中。

f="$1"

[ -e "$f" ] && [ ! -s "$f" ] && echo "$f" || echo '(nosuch)'

echo ---"$f".swp--- ---."$f".swp---
echo ---"$f".tmp--- ---."$f".tmp---

这是取消清空文件后第二次的输出。

]# . delswp.sh 'f f'

f f
---f f.swp--- ---.f f.swp---
---f f.tmp--- ---.f f.tmp---

]# echo " " >>'f f'
]# . delswp.sh 'f f'

(nosuch)
---f f.swp--- ---.f f.swp---
---f f.tmp--- ---.f f.tmp---

删除后,第二部分可能只是:

rm -f "$f".swp ."$f".swp "$f".tmp ."$f".tmp

相关内容