如何将sudo添加到grep并删除命令?

时间:2015-11-12 17:50:50

标签: bash terminal

我正在尝试使用以下命令,但它需要运行sudo才能工作,我该怎么做?

cd /usr/local/bin && \
ls -l /usr/local/bin | grep '../Library/Frameworks/Python.framework/Versions/2.7' | awk '{print $9}' | xargs rm

2 个答案:

答案 0 :(得分:1)

根据我的经验,sudo cd会给你带来麻烦。

您可以cd /usr/local/bin然后运行sudo ls -l ...

OR

由于您指定路径,因此看起来并不真正需要cd。因此,请忽略cd命令并在所有地方使用完整路径。

答案 1 :(得分:1)

这是一种可怕的方法,用于删除sizeof中指向/usr/local/bin的所有符号链接。

它会解析../Library/Frameworks/Python.framework/Versions/2.7(请参阅this了解您不想这样做的原因。)

它使用ls,理论上至少可以捕捉到超出预期的效果。

如果找到的文件名中包含空格,则不安全/无法正常工作。

这项任务也非常复杂。

试试这个:

grep

如果它打印出您期望的事物的名称(将find /usr/local/bin -lname '*/../Library/Frameworks/Python.framework/Versions/2.7*' 添加到结尾以获得-ls - 样式输出)然后使用

ls -l

删除它们(假设OS X find /usr/local/bin -lname '*/../Library/Frameworks/Python.framework/Versions/2.7/*' -delete 支持find)。

如果它不使用-delete-execdir rm {} \+-execdir rm {} \;-exec rm {} \+(按此顺序,直到找到有效的方式)。

使用-exec rm {} \;-okdir代替-ok-execdir会导致-exec在运行之前打印要运行的命令以进行确认(类似find将提示删除每个文件。)

然后,您可以根据需要在整个rm -i命令或sudo命令中使用find