gpt4 book ai didi

linux - 连接文件夹中的大量文件时参数列表太长

转载 作者:太空狗 更新时间:2023-10-29 11:27:20 25 4
gpt4 key购买 nike

这是一个将多个相同模式文件连接成一个大文件的命令。在我有 77k 个文件的文件夹中,我得到 Argument list too long

示例文件名是每分钟:cartreset-2014-05-08-01-12.log

rm -f /tmp/temp.files
ls -1 /var/log/processing/*.log | \
xargs -n1 basename > /tmp/temp.files
cat /tmp/temp.files | \
sed -r "s~(.*)-[0-9]{4}(-[0-9]{2})+\.log~cat /var/log/processing/\1* >> /var/log/processing/\1$(date +"-%Y-%m-%d-%H-%M").log~" | \
uniq | \
sh
cd /var/log/processing
xargs rm -rf < /tmp/temp.files
rm -f /tmp/temp.files

sh: /bin/ls: Argument list too long

我有哪些选择?

最佳答案

您的完整代码是:

rm -f /tmp/temp.files
ls -1 /var/log/processing/*.log | xargs -n1 basename > /tmp/temp.files
cat /tmp/temp.files | sed -r "s~(.*)-[0-9]{4}(-[0-9]{2})+\.log~cat /var/log/processing/\1* >> /var/log/processing/\1$(date +"-%Y-%m-%d-%H-%M").log~" | uniq | sh
cd /var/log/processing
xargs rm -rf < /tmp/temp.files
rm -f /tmp/temp.files

但问题出在 ls -1/var/log/processing/*.log 部分,所以我跳过了其余部分。

/var/log/processing/*.log 完成的扩展给出了如此多的结果,以至于 ls 本身无法处理所有这些结果,因此打印“Argument list太长”消息。

您可以像这样使用 find 语句:

find /var/log/processing -name "*.log" -exec basename {} \; > /tmp/temp.files

看到我没有使用 ls 解析(阅读有趣的 Why you shouldn't parse the output of ls )。

关于linux - 连接文件夹中的大量文件时参数列表太长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23627692/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com