相关疑难解决方法(0)

rm,cp,mv命令的参数列表太长错误

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

当我尝试使用以下命令一起删除所有PDF时:

rm -f *.pdf
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

/bin/rm: cannot execute [Argument list too long]
Run Code Online (Sandbox Code Playgroud)

这个错误的解决方案是什么?这个错误是否也出现在命令mvcp命令中?如果是,如何解决这些命令?

unix linux command-line-arguments

584
推荐指数
13
解决办法
53万
查看次数

Bash命令行和输入限制

在bash(或其他shell)中是否存在某种字符限制,可以输入多长时间?如果是这样,那个字符限制是什么?

即是否可以在bash中编写一个命令行执行时间过长的命令?如果没有要求的限制,是否有建议的限制?

unix bash shell command-line-arguments

81
推荐指数
2
解决办法
9万
查看次数

传递引用的参数时,为什么我会得到"/ bin/sh:参数列表太长"?

可以传递给命令行多长时间sh -c ''?(在bash和bourne shell中)

该限制远低于操作系统的限制(在现代Linux的情况下).

例如:

$ /bin/true $(seq 1 100000)
$ /bin/sh -c "/bin/true $(seq 1 100000)"
bash: /bin/sh: Argument list too long
Run Code Online (Sandbox Code Playgroud)

我怎么能绕过这个问题呢?

更新

我想注意到getconf这里无法帮助(因为这不是系统限制):

$ seq 1 100000 | wc -c
588895
$ getconf ARG_MAX
2097152
Run Code Online (Sandbox Code Playgroud)

更新#2

现在我明白了这里有什么意义.这不是shell限制,即系统限制,但是对于每个参数的长度,而不是整个arglist.

$ /bin/true $(seq 1 100000)
$ /bin/true "$(seq 1 100000)"
bash: /bin/true: Argument list too long
Run Code Online (Sandbox Code Playgroud)

谢谢CodeGnome的解释.

bash shell command-line arguments quoting

24
推荐指数
2
解决办法
3万
查看次数

错误:"grep:参数列表太长"

我试图运行以下命令,但得到参数太长的错误.你能帮我吗?.

HOST# grep -rl 'pattern' /home/*/public_html/*
-bash: /bin/grep: Argument list too long
Run Code Online (Sandbox Code Playgroud)

有没有办法覆盖此错误并grep我想要在所有用户public_html目录中的模式匹配文件.同一台服务器中大约有500多个用户.

unix linux bash grep find

14
推荐指数
1
解决办法
4万
查看次数

如何在没有参数列表太长的情况下移动多个文件?

我试图在我的Ubuntu服务器中将大约700,000个.jpg文件从一个目录移动到另一个目录.我尝试了以下方法:

xargs mv *  -t /var/www/html/
Run Code Online (Sandbox Code Playgroud)

echo (*.jpg|*.png|*.bmp) | xargs mv -t /var/www/html/
Run Code Online (Sandbox Code Playgroud)

echo (*.jpg) | xargs mv -t /var/www/html/
Run Code Online (Sandbox Code Playgroud)

find . -name "*.jpg" -print0 | xargs mv * ../
Run Code Online (Sandbox Code Playgroud)

它们都给我同样的错误:/ usr/bin/xargs:参数列表太长了

我该怎么办?请帮帮我.谢谢 :)

linux ubuntu xargs mv

11
推荐指数
2
解决办法
2万
查看次数

如何在避免“太多论点”的同时进行 grep

我试图清除一些垃圾邮件,但遇到了一个问题。队列中的文件数量太大,我通常的命令无法处理。它会给我一个关于太多参数的错误。

我通常这样做

grep -i user@domain.com 1US* | awk -F: '{print $1}' | xargs rm
Run Code Online (Sandbox Code Playgroud)

1US* 可以是 1US[a-zA-Z] 之间的任何值。我唯一能做的就是运行这个可怕的装置。它的一个文件,包含 1USa、1USA、1USb 等,贯穿整个字母表。我知道他们必须是一种更有效地运行它的方法。

grep -s $SPAMMER /var/mailcleaner/spool/exim_stage1/input/1USa* | awk -F: '{print $1}' | xargs rm
grep -s $SPAMMER /var/mailcleaner/spool/exim_stage1/input/1USA* | awk -F: '{print $1}' | xargs rm
Run Code Online (Sandbox Code Playgroud)

linux bash grep

6
推荐指数
1
解决办法
1万
查看次数

grep返回"命令中指定的参数太多"

我试图列出我们在一个月内收到的所有文件

文件名模式将是

20110101000000.txt

YYYYMMDDHHIISS.txt
Run Code Online (Sandbox Code Playgroud)

整个目录有数百万个文件.一个月内最少可以有50000个文件.子目录的想法仍然悬而未决.有没有办法列出文件名几乎相似的大量文件.

grep -l 20110101*    
Run Code Online (Sandbox Code Playgroud)

我正在尝试这个并返回错误.我尝试php花了很长时间,这就是为什么我使用shell脚本.我不明白为什么外壳也没有给出结果任何建议请!!

unix shell file

3
推荐指数
1
解决办法
2174
查看次数

吞咽 JSON 文件时出现“参数列表太长”

我有数千个 JSON 文件,我想将它们合并为一个。我正在使用下面的命令来做到这一点。

jq -s . -- *.json > result.json
Run Code Online (Sandbox Code Playgroud)

但是我收到参数列表太长错误,可能是因为我尝试合并的文件数量太多。这个问题有什么解决方法吗?

bash jq

3
推荐指数
1
解决办法
192
查看次数

对于sys.argv中的fi [1:]:参数列表太长了

我试图在文件夹中的所有文本文件上执行python脚本:

for fi in sys.argv[1:]:
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

-bash: /usr/bin/python: Argument list too long
Run Code Online (Sandbox Code Playgroud)

我称之为Python函数的方式如下:

python functionName.py *.txt
Run Code Online (Sandbox Code Playgroud)

该文件夹有大约9000个文件.有没有办法运行此功能,而不必将我的数据拆分到更多的文件夹等?拆分文件不太实用,因为我将来必须在更多文件中执行该功能...谢谢

编辑:根据选定的正确回复和回复者(Charles Duffy)的评论,对我有用的是:

printf '%s\0' *.txt | xargs -0 python ./functionName.py
Run Code Online (Sandbox Code Playgroud)

因为我没有有效的shebang ..

python bash arguments argv

2
推荐指数
1
解决办法
4869
查看次数

标签 统计

bash ×6

linux ×4

unix ×4

shell ×3

arguments ×2

command-line-arguments ×2

grep ×2

argv ×1

command-line ×1

file ×1

find ×1

jq ×1

mv ×1

python ×1

quoting ×1

ubuntu ×1

xargs ×1