[英]Python Fabric - Remove files matching a pattern in a directory w/ spaces?
我正在尝试删除具有扩展名如* .pyc的空格/ files /的文件夹/ myfolder / name中的所有文件,但不要更改该文件夹中的其他文件。
我尝试跑步:
$ rm "/myfolder/name with spaces/files/*.pyc"
但出现"No such file or directory"
错误。
我也尝试运行:
$ rm "/myfolder/name with spaces/files"*.pyc
但是,如果文件夹中没有带有* .pyc扩展名的文件,这似乎将失败(当存在* .pyc文件时,它可以工作)。
转义空格似乎也不起作用。
做到这一点的最佳方法是什么(假设我无法重命名路径)?
编辑 :我找到了一个解决方案,并且我有一个后续问题:
我刚刚发现,运行以下命令是可行的,并且从类似的帖子中得到了一些启示:
$ find "myfolder/name with spaces/files/" -name *.pyc -exec rm '{}' ';'
有没有一种方法可以单独使用rm
来完成上述操作? 以上命令是执行此操作的最佳方法吗? 我的理解是,通常应谨慎使用-exec
。
编辑2 :更好的解决方案!
一些更好的上下文:我正在尝试使用Fabric远程运行这些命令。
我没有意识到有一个cd
上下文管理器,但是使用它我找到了一个解决方案:
from fabric.api import cd
with cd('/myfolder/name with spaces/files/'):
sudo('rm -f *.pyc')
我还发现了一个单独的问题:使用rm *.pyc
导致Fabric失败,因为目录中没有* .pyc文件,因此使用rm -f *.pyc
允许命令静默失败并允许Fabric继续。
找到了一个解决方案,在上述问题的答案中将其编辑为“ EDIT 2”
我没有意识到Fabric中有一个cd
上下文管理器,因此我找到了一个解决方案:
from fabric.api import cd
with cd('/myfolder/name with spaces/files/'):
sudo('rm -f *.pyc')
我还发现了一个单独的问题:使用rm *.pyc
导致Fabric失败,因为目录中没有* .pyc文件,因此使用rm -f *.pyc
允许命令静默失败并允许Fabric继续。
要使用rm而不是find来做到这一点(这是一种非常好的方法),您可以转义目录名称中的空格:
rm /myfolder/name\ with\ spaces/files/*.pyc
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.