gpt4 book ai didi

linux - 使用 sh -c 的 xargs 的多个命令不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 10:02:23 25 4
gpt4 key购买 nike

我正在尝试运行这个命令

find . -name "new_impl.jar" | xargs -I '{}' sh -c 'java -jar jd-cli.jar --skipResources -n -g ALL '{}';' 

它不工作,错误看起来是它无法选择 '{}' 的值。当我删除有助于运行多个命令的 sh -c 部分时

find . -name "new_impl.jar" | xargs -I '{}' java -jar jd-cli.jar --skipResources -n -g ALL '{}';'

此命令运行良好。我正在使用 Oracle Linux 7。有人能告诉我这背后的原因是什么吗?是否还有其他方法可以运行多个命令。

最佳答案

我建议将文件名作为参数传递给 sh

find . -name "new_impl.jar" | 
xargs -I '{}' \
sh -c 'java -jar jd-cli.jar --skipResources -n -g ALL "$1";rm "$1";mv *.jar "$1";unzip "$1" -d "$1".bk/;rm "$1"' _ {}

请注意,这也适用于使用 find 中的 -exec

find -name "new_impl.jar" \
-exec sh -c 'java -jar jd-cli.jar --skipResources -n -g ALL "$1";rm "$1";mv *.jar "$1";unzip "$1" -d "$1".bk/;rm "$1"' _ {}

关于linux - 使用 sh -c 的 xargs 的多个命令不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55189174/

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