Can*_*oss 23 linux filesystems shell
在shell脚本中,如何通过特定名称查找文件,然后导航到该目录以对其进行进一步操作?
从这里开始,我将把文件复制到另一个目录(但是我可以将其添加到上下文中.)
pax*_*blo 24
您可以使用以下内容:
pax[/home/pax]> cd "$(dirname "$(find / -type f -name ls | head -1)")"
pax[/usr/bin]> _
这将找到第一个ls常规文件,然后切换到该目录.
就每个位的作用而言:
/搜索将从搜索开始并向下搜索,列出所有常规文件(-type f),名为ls(-name ls).您还可以添加其他内容find以进一步限制所获得的文件.head -1将过滤除第一个以外的所有.$()是一种获取命令输出并将其放在命令行上以获取另一个命令的方法.dirname 可以采用完整的文件规范并为您提供路径位.cd 只是更改到该目录.如果按顺序执行每个位,您可以看到发生了什么:
pax[/home/pax]> find / -type f -name ls
/usr/bin/ls
pax[/home/pax]> find / -type f -name ls | head -1
/usr/bin/ls
pax[/home/pax]> dirname "$(find / -type f -name ls | head -1)"
/usr/bin
pax[/home/pax]> cd "$(dirname "$(find / -type f -name ls | head -1)")"
pax[/usr/bin]> _
Phi*_*ipp 11
以下应该更安全:
cd -- "$(find / -name ls -type f -printf '%h' -quit)"
好处:
find不产生这样的文件名,但它没有害处,可能是类似构造所必需的)-name检查前-type检查,因为后者有时需要statdirname必需,因为说明%h符已经打印了目录名称-quit在找到第一个文件后停止搜索,因此head不需要哪个会导致脚本在包含换行符的目录名称上失败没有人建议定位(对于大树,这要快得多)?
zsh:
cd $(locate zoo.txt|head -1)(:h)
cd ${$(locate zoo.txt)[1]:h}
cd ${$(locate -r "/zoo.txt$")[1]:h}   
or could be slow
cd **/zoo.txt(:h)
重击:
cd $(dirname $(locate -l1 -r "/zoo.txt$"))
| 归档时间: | 
 | 
| 查看次数: | 23408 次 | 
| 最近记录: |