我试图删除文件夹/ myfolder / name中的所有文件,其中space / files /的扩展名为* .pyc,但保留同一文件夹中的其他文件。
我试过跑:
$ rm "/myfolder/name with spaces/files/*.pyc"
但我收到"No such file or directory"
错误。
我也尝试过跑步:
$ rm "/myfolder/name with spaces/files"*.pyc
但是如果文件夹中没有带* .pyc扩展名的文件,这似乎会失败(当存在* .pyc文件时它会起作用。)
逃离空间似乎也无效。
最好的方法是什么(假设我不能重命名路径)?
编辑:我找到了一个解决方案,我有一个后续问题:
我刚刚发现运行以下命令有效,其中一些灵感来自this similar post:
$ 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继续
答案 0 :(得分:4)
找到一个解决方案,在上面问题的答案中编辑为“编辑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继续
答案 1 :(得分:0)
要使用rm而不是find(这是一种非常好的方式),你可以转义目录名中的空格:
rm /myfolder/name\ with\ spaces/files/*.pyc