linux下删除某一目录下所有非文件夹的文件命令

linux下删除某一目录下所有非文件夹的文件命令,第1张

$ ls --file-type | grep -v "/$" | xargs rm -f

命令删除当前目录下除了文件以外的所有文件

使用 ls --file-type 会列举出当前目录下所有的文件和文件夹,且文件夹后面会带一个 /

再用 grep -v 将文件夹过滤掉,文件夹的 / 符号在结尾,所以使用正则表达式 "/$" 过滤

最后将其他所有的文件通过 rm 命令删除,此时需要将文件名通过 xargs 传递到命令行参数中。

在某个文件夹执行命令完全卡死,(ctrl+z,ctrl+c等都不能用),表现为:

只好关闭当前shell,重新登录。

产生原因:

该文件夹中有一个服务挂载在该文件夹某一目录下,因突然关机等异常情况导致该服务无限制等待,机器重启后也不能正常连接。

解决方法:

查看与该文件夹相应的服务挂载情况:mount -l | grep 有问题文件夹名,如mount -l | grep "/root/bakup"

umount -l 文件夹,此刻,再访问文件夹即可使用命令了!

作为一个linux用户/系统管理员, 有些时候你会遇到以下错误提示:

bash: /bin/ls: Argument list too long

bash: /bin/rm: Argument list too long

产生原因:

“Argument list too long”参数列表过长错误经常发生在用户在一行简单命令中提供了过多的参数而导致,经常在ls *, cp *, rm * 等中出现,一般是因为受到 shell 参数个数限制所致

解决方法:

方法1 : 将文件群手动划分为比较小的组合

这是最基本的方法,只是简单的使参数数量符合要求,这种方法应用范围有限,只适用于文件列表中的名字分布比较均匀,另外这也是个初级用户可以考虑的解决方案,不过需要很多重复命令和对文件名分布的观察与猜测。

方法2 : 使用find命令

通过find命令,将文件清单输出到rm命令,使其一次处理一个,这样就完全避免了过量参数的存在,另外通过不同的参数,可以指定除了名称以外的时间戳,权限,以及inode等匹配模式。

方法3: 使用xargs命令

用xargs 命令将文件以每 100 个为一组为单位处理

xargs 命令会将文件以每 100 个为一组做 rm 处理。

方法4: 使用 ls 结合 awk *** 作

可以使用 awk 一次删除一个的方式进行删除,但必须先进入该目录下。

Linux 命令 argument list too long 错误解决

https://blog.51cto.com/u_14782715/5082973

https://blog.csdn.net/fdipzone/article/details/41558461

Linux删除文件出现/bin/rm: Argument list too long解决方法

https://southcat.net/1481.html

Linux下经过 rm -f 删除大量文件时报错:Argument list too long

http://www.javashuo.com/article/p-pucmuhoh-v.html

Linux文件系统十问

https://mp.weixin.qq.com/s/pOKjwl3ONPMPSRF6RSmvaw

新建一个空文件占用多少磁盘空间?

https://mp.weixin.qq.com/s/9YeUEnRnegplftpKlW4ZCA

文件过多时ls命令为什么会卡住?

https://mp.weixin.qq.com/s/g-fFoYsBJkonV3ezdGDJKA


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7646833.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-08
下一篇 2023-04-08

发表评论

登录后才能评论

评论列表(0条)

保存