小编GST*_*tle的帖子

Python Fabric-删除带有空格的目录中与模式匹配的文件?

我正在尝试删除具有扩展名如* .pyc的空格/ files /的文件夹/ myfolder / name中的所有文件,但不要更改同一文件夹中的其他文件。

我尝试跑步:

$ rm  "/myfolder/name with spaces/files/*.pyc"
Run Code Online (Sandbox Code Playgroud)

但我得到一个"No such file or directory"错误。

我也尝试运行:

$ rm "/myfolder/name with spaces/files"*.pyc
Run Code Online (Sandbox Code Playgroud)

但是,如果文件夹中没有带有* .pyc扩展名的文件,这似乎将失败(当存在* .pyc文件时,它可以工作)。

转义空格似乎也不起作用。

做到这一点的最佳方法是什么(假设我无法重命名路径)?


编辑:我找到了一个解决方案,并且我有一个后续问题:

我刚刚发现,运行以下命令是可行的,并且从类似的帖子中得到了一些启示:

$ find "myfolder/name with spaces/files/" -name *.pyc -exec rm '{}' ';'
Run Code Online (Sandbox Code Playgroud)

有没有办法单独使用上述方法rm?以上命令是执行此操作的最佳方法吗?我的理解是,通常-exec应谨慎使用。


编辑2:更好的解决方案!

一些更好的上下文:我正在尝试使用Fabric远程运行这些命令。

我没有意识到有一个cd上下文管理器,但是使用它我找到了一个解决方案:

from fabric.api import cd
with cd('/myfolder/name with spaces/files/'):
    sudo('rm -f *.pyc')
Run Code Online (Sandbox Code Playgroud)

我还发现了一个单独的问题:rm *.pyc由于目录中没有* .pyc文件,因此使用rm -f *.pycFabric导致失败,因此使用allow命令可以使静默失败并允许Fabric继续。

regex unix bash fabric

2
推荐指数
1
解决办法
1766
查看次数

标签 统计

bash ×1

fabric ×1

regex ×1

unix ×1