0

我想对所有子文件夹的每个文件运行一个命令(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

正确的代码如何?

4

3 回答 3

3

这里不需要函数。尝试:

find . -name "*.pyc" -exec sh -c "pycdc {} > {}_dec" \;
于 2013-09-17T13:42:23.753 回答
1

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

while read -r F; do
    uncompyle "$F"
done < <(exec find . -type f -name '*.pyc')
于 2013-09-17T13:42:19.710 回答
0

尝试这个:

find . -path '*.pyc' -exec bash -c pycdc "$0" >"$0"_dec {} \;
于 2013-09-17T13:40:42.733 回答