如何为每个.py-fi文件创建单独的zip文件

2024-10-16 17:17:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要创建一个bash脚本,为同一目录中的每个python文件创建单独的zip文件。你知道吗

我发现下面的命令可以创建具有文件和原始文件扩展名的zip文件。e、 g为test.py创建了test.py.zip

find . -name '*.py' -exec zip '{}.zip' '{}' \;

如何更新命令以除去原始文件扩展名。e、 g.test.zip而不是test.py.zip

提前谢谢。你知道吗


Tags: 文件namepytest命令目录脚本bash
2条回答

可以使用basename <file> <extension>剥离扩展。你可以用多种方法来安排。你知道吗

bash中使用循环

例如,循环查看find的结果,然后压缩文件:

for f in $(find . -name '*.py')
do 
    zip "$(basename "$f" .py).zip" "$f"
done

find中使用子shell

不幸的是,我们不能直接在find ... -exec中使用$(...)。但是,我们可以随时调用shell并在那里执行:

find . -name '*.py' -exec sh -c 'zip "$(basename "$0" .py)".zip "$0"' '{}' \;

使用find-exec选项不能这样做。您可以使用bashwhile循环和sed来处理find的输出:

find . -name '*.py' -print | while read FILE; do zip `echo $FILE|sed 's/\py$//'`zip $FILE; done

相关问题 更多 >