最好的学习方法,莫过于从实践中学习。
首先需要区分文件和文件夹,需要使用 find 命令加 -type f 的参数,找出文件下下的所有文件。其次再通过rm -rf 的命令删除文件。我首先想到的是这样子的
find -type f | rm -rf
rm: missing operand
Try 'rm --help' for more information.
目录下是有文件的,结果却报 rm 命令没有加operand ;查阅资料后发现rm 命令不支持管道。于是我想着把find 出来的文件用变量保存,再通过rm删除。第一种方法命令如下。
FIHSER155:test $ a=`find -type f` ; rm -rf $a
FIHSER155:test $ find -type f
FIHSER155:test $
目的达成了。注意** `` ** 这个符号是反单引号,键盘符号1的左边那个键盘。
; 这个是指第一个命令执行完后不管成功与否再执行后面的指令,就是一组命令列表。类似shell 脚本里面的换行。
其实还有第二种方法,也是比较普遍的方法, 那就是用 xargs 指令,让不支持管道的命令采用类似管道的做法。命令如下:
find -type f | xargs rm -rf
关于xargs 的详细用法可以参考以下网址
xargs详细用法
还有第三种方法:
对find 命令深入了解后发现find 命令的 -exec 参数也能实现这个功能,代码如下:
$ find -type f
./ext4.ext4
./source/keytest.sh
./source/static/static.h
./source/static/static.c
./source/static/main.c
......
$ find -type f -exec rm -rf {} \;
$ find -type f
但是方法一和方法三是有缺陷的,因为 -exec 和变量的方式 是将查找的范围一次性发送到后面的命令当中,当查找到的结果较多会导致命令行参数溢出。因此还是推荐第二种方式。
喜欢博主的麻烦一键三连,谢谢!