Bash

如何在 find -exec 中對 {} 使用命令擴展?

  • December 2, 2018

我想通過以下方式找到一些目錄

find /path/to/a/dir -type d  -links 2 

然後對於找到的每個路徑名find,假設儲存在變數中pathname,我想

stow -d "$(dirname "$pathname")" -t /home/t/bin "$(basename "$pathname")" 

我如何將上述內容與 結合起來find -exec,類似於:

find /path/to/a/dir -type d  -links 2 -exec stow -d "$(dirname \{\})" -t /home/t/bin "$(basename \{\})" \;

我認為它不起作用,因為 shell 在執行之前執行了命令替換find,並且在命令替換中還沒有找到要替換的路徑名\{\}

謝謝。

你把它包裝在一個sh -c命令中

find /path/to/dir -type d -links 2 -exec sh -c 'stow -d "$(dirname "$1")" -t /home/t/bin "$(basename "$1")"' sh {} \;

引用自:https://unix.stackexchange.com/questions/485432