我想
- 查找特定文件夹
- 呼应他们的名字
- ls -l 其内容
我的问题是我不知道如何在一个查找命令中结合echo {}
和。ls -l {}
回显行:
sudo find / -type d -name 'yt' -exec echo {} \;
ls 行:
sudo find / -type d -name 'yt' -exec ls -l {} \;
我怎样才能将这两者结合起来?
注意:如果可能的话,我不愿意使用 xargs,因为它在正确转义文件名方面存在问题。
答案1
为什么不在-exec
同一个find
命令中放置两个不同的选项?
这对我有用:
$ find --version 查找(GNU findutils)4.4.2
$ 查找。-type d-name mydir-exec echo {} \;-exec ls-l {} \; ./我的目录 共 0 -rw-rw-r-- 1 daniel daniel 0 二月 25 15:32 myfile
答案2
这不是通用的解决方案,但由于您搜索目录,因此它将对您有用:
sudo find / -type d -name'yt'-execdir readlink -f {} \; -exec ls -l {} \;
execdir 在与找到的文件匹配的子目录上执行命令(由于您搜索的是目录),该子目录就是目录本身(readlink -f 给出其完整路径)。另一方面,第二个 -exec 将再次匹配目录并对其执行“ls -”。
在第一个 execdir 上使用 jsut echo 不会写出完整路径,而只会写出最后一个目录,这可能还不够。
答案3
您可以在此处轻松使用打印命令。
$sudo find / -type d -name 'bin' -print -exec ls -l {} \;
例如,
- 找到 bin 文件夹
- 呼应他们的名字或打印他们的名字
- ls -l 其内容 - 列出其内容。