如何用Linux命令删除目录中非4字符文件名(忽略扩展名)的文件?
按文件名前缀长度删除文件的Linux命令
要删除当前目录中文件名前缀(不含扩展名)长度不为4个字符的文件,保留前缀为test(4个字符)的文件,可以用以下bash循环命令:
for file in *.*; do prefix="${file%.*}" if [ ${#prefix} -ne 4 ]; then rm -- "$file" fi done
命令说明:
for file in *.*:遍历当前目录下所有带扩展名的文件(匹配你列出的所有目标文件)prefix="${file%.*}":通过参数扩展截取文件名的前缀部分(比如test2.png会被处理为test2)if [ ${#prefix} -ne 4 ]:判断前缀的字符长度是否不等于4rm -- "$file":删除符合条件的文件,--用来避免文件名以-开头时出现命令参数错误
安全建议:
执行删除前,建议先把rm -- "$file"替换成echo "$file",运行后查看输出的文件列表,确认是你想要删除的文件,再替换回rm执行删除操作。
内容的提问来源于stack exchange,提问作者Dev0r
相关产品推荐
相关产品推荐

