我在UNIX的目录下有几百个PDF.PDF的名称非常长(约60个字符).

当我try 使用以下命令同时删除所有PDF时:

rm -f *.pdf

我得到以下错误:

/bin/rm: cannot execute [Argument list too long]

这个错误的解决方案是什么?

推荐答案

出现这种情况的原因是bash实际上会将星号扩展到每个匹配的文件,从而生成一个非常长的命令行.

试试这个:

find . -name "*.pdf" -print0 | xargs -0 rm

Warning:这是一个递归搜索,也会在子目录中查找(和删除)文件.只有在确定不需要确认的情况下,才能在rm命令上添加-f.

可以执行以下操作以使命令非递归:

find . -maxdepth 1 -name "*.pdf" -print0 | xargs -0 rm

另一个选项是使用find的-delete标志:

find . -name "*.pdf" -delete

Linux相关问答推荐

C++ kill()使Linux崩溃到登录屏幕

如何删除字符串中的`{{i:`and `}}`

如何在不使用LD_LIBRARY_PATH或RPATH的情况下运行链接到共享库的二进制文件?

如何在具有多种可能性的linux shell中获取最大值和最小值?

erlang 格式的 utf8 变为 \x(反斜杠 x)ascii 编码

递归/详尽地将点插入字符串

如何拆分多个分隔符但将它们保留在方括号之间?

命令应在终端关闭后继续运行

如何在守护进程中使用 popen() 和 pclose() 获取通过管道执行的 shell 命令的正确退出代码?

如何使用 GDB 和 QEMU 调试 Linux 内核?

如何在 Linux 中设置目录大小限制?

如何构建在 Android 上运行的本机(命令行)可执行文件?

比较linux中两个未排序的列表,列出第二个文件中的唯一性

从命令行导入 PostgreSQL CSV

如何链接到 GCC 中特定版本的共享库

在文件夹中的 gzip 文件中查找字符串

Android - 找不到命令

Linux:删除多个文件的文件扩展名

Linux shell 中的排序和唯一性

Linux 上 POSIX AIO 和 libaio 的区别?