当我运行此命令时,它起作用:
$ find . -inum 888696 -exec ls '{}' \;
Conversation.pst Outlook Data File Outlook Data File.sbd Trash Unsent Messages
Inbox.pst Outlook Data File.msf Sent.pst Trash.msf Unsent Messages.msf
然而,当更换ls
与cd
它不工作:
$ find . -inum 888696 -exec cd '{}' \;
find: ‘cd’: No such file or directory
我知道cd
是一个bash
内置的,所以我想这里面确实没有任何工作:
$ find . -inum 888696 -exec builtin cd '{}' \;
find: ‘builtin’: No such file or directory
如何cd
与find -exec
命令一起使用?
我试图使用的原因cd
有find -exec
是该目录名是一个奇怪的一个,显示了我的终端,就像这样的????
。
执行外部实用程序的-exec
选项find
,可能带有某些命令行选项和其他参数。
您的Unix不cd
作为外部实用程序提供,而仅作为内置的Shell提供,因此find
无法执行。至少macOS和Solaris确实提供了cd
作为外部实用程序的功能。
cd
以这种方式执行几乎没有用,或者没有用,除非是一种测试所找到的路径名是否find
是您将能够进入的目录的方式cd
。交互式外壳程序(或任何正在调用find
)中的工作目录无论如何都不会更改。
有关的:
如果您遇到目录名称奇怪或很难输入的问题,并且想要更改到该目录,请考虑创建指向该目录的符号链接,然后cd
使用该链接进入该目录:
find . -inum 888696 -exec ln -s {} thedir ';'
这将创建一个符号链接thedir
,该链接将指向有问题的目录。然后,您可以使用
cd thedir
(如果链接存在于当前目录中)。这样可以避免以任何方式修改目录。另一个想法是使用与相似的方式来重命名目录find
,但是如果另一个程序希望目录具有该特定名称,则不建议这样做。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句