编写一个 Bash 脚本,将文件名和目录名作为命令行参数,如果在给定目录下找到该文件并且该文件是零长度文件、.swp 文件(可能是隐藏的)或 .tmp 文件(也许隐藏)。
有人可以提供这个代码吗?
答案1
这会递归地列出目录“目录名称”中的文件,这些文件是常规文件,名称以点开头(隐藏),并且为空
find «directory-name» -type f -name ".*" -empty
答案2
rm
这是我认为有意义的回显版本(而不是,更容易测试)。
这个想法是将其分成两部分。首先,测试是否为空并有条件删除。然后,rm
选择-f
4 个变体。这里是两行 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