繁体   English   中英

如何在Linux Shell上递归调用命令

[英]How recursively call a command on linux shell

我想在所有子文件夹的每个文件上运行命令(pycdc)

#!/bin/sh
uncompyle () {
pycdc "$1" >"$1"_dec
}
export -f uncompyle

find . -type f -name '*.pyc' -exec bash -c 'uncompyle "$0"' {} \;

但是我得到了错误:

 Bad MAGIC! Could not load file ./file/my.pyc 

正确的代码如何?

您在这里不需要功能。 尝试:

find . -name "*.pyc" -exec sh -c "pycdc {} > {}_dec" \;

如果使用进程替换并在循环中运行它会更安全,因为您的函数不会通过find导出。

while read -r F; do
    uncompyle "$F"
done < <(exec find . -type f -name '*.pyc')

尝试这个:

find . -path '*.pyc' -exec bash -c pycdc "$0" >"$0"_dec {} \;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM