O comando que você está procurando é xargs
. Normalmente você usaria assim:
find . -name src -print0 | xargs -I{} -0 echo {}
ou para sua pergunta explícita:
find . -name src -print0 | xargs -I{} -0 cd {}
Alguém pode sugerir como eu posso usar este passo no script (que eu preciso pegar a saída do primeiro comando eu preciso usar o segundo comando para todos os três)?
[aaa@build]$ find . -name src
./Port/bit/WE-IN/src
./MI/M-Scripts/Msg/src
./MI/M-Scripts/TT/src
[aaa@build]$ cd ./Port/bit/WE-IN/src
O comando que você está procurando é xargs
. Normalmente você usaria assim:
find . -name src -print0 | xargs -I{} -0 echo {}
ou para sua pergunta explícita:
find . -name src -print0 | xargs -I{} -0 cd {}
O que você pode fazer é declarar a função shell e passar cada resultado de find para um loop while, que chamará essa função por diretório.
#!/bin/bash
function f
{
echo "THIS IS " $(pwd)
ls
}
find . -maxdepth 1 -type d -name "bin" -printf "%P\n" | while read DIRNAME;
do
cd $DIRNAME
f
done
Aqui está uma amostra de execução:
$ ./findAndFunction.sh
THIS IS /home/xieerqi/bin
autostart-script.sh c java perl python README.md sergrep shell
Tags shell-script