2024-10-16 17:17:50 发布
网友
我需要创建一个bash脚本,为同一目录中的每个python文件创建单独的zip文件。你知道吗
我发现下面的命令可以创建具有文件和原始文件扩展名的zip文件。e、 g为test.py创建了test.py.zip
test.py
test.py.zip
find . -name '*.py' -exec zip '{}.zip' '{}' \;
如何更新命令以除去原始文件扩展名。e、 g.test.zip而不是test.py.zip
test.zip
提前谢谢。你知道吗
可以使用basename <file> <extension>剥离扩展。你可以用多种方法来安排。你知道吗
basename <file> <extension>
在bash中使用循环
bash
例如,循环查看find的结果,然后压缩文件:
find
for f in $(find . -name '*.py') do zip "$(basename "$f" .py).zip" "$f" done
在find中使用子shell
不幸的是,我们不能直接在find ... -exec中使用$(...)。但是,我们可以随时调用shell并在那里执行:
find ... -exec
$(...)
find . -name '*.py' -exec sh -c 'zip "$(basename "$0" .py)".zip "$0"' '{}' \;
使用find的-exec选项不能这样做。您可以使用bash的while循环和sed来处理find的输出:
-exec
while
sed
find . -name '*.py' -print | while read FILE; do zip `echo $FILE|sed 's/\py$//'`zip $FILE; done
可以使用
basename <file> <extension>
剥离扩展。你可以用多种方法来安排。你知道吗在
bash
中使用循环例如,循环查看
find
的结果,然后压缩文件:在
find
中使用子shell不幸的是,我们不能直接在
find ... -exec
中使用$(...)
。但是,我们可以随时调用shell并在那里执行:使用
find
的-exec
选项不能这样做。您可以使用bash
的while
循环和sed
来处理find
的输出:相关问题 更多 >
编程相关推荐