如何在一次查找中执行两个命令

如何在一次查找中执行两个命令

我想

  1. 查找特定文件夹
  2. 呼应他们的名字
  3. 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 {} \;

例如,

  1. 找到 bin 文件夹
  2. 呼应他们的名字或打印他们的名字
  3. ls -l 其内容 - 列出其内容。

相关内容