Para verificar apenas o t1.csv
, você pode usar:
find . -name 't1.csv'
Agora, para ir no primeiro diretório onde t1.csv
arquivo é encontrado, você pode usar:
cd $(dirname $(find . -name 't1.csv' 2>/dev/null | head -1) 2>/dev/null)
Eu uso find para procurar por arquivos em um diretório ou em seus subdiretórios.
find . -iname '*.csv'
, e isso me dá a seguinte saída
./2012/t1.csv
./2012/t2.csv
./2013/t1.csv
Agora, desejo verificar em um script se o arquivo t1.csv
está na pasta atual ou em um dos subdiretórios. Se estiver em um subdiretório, meu script deve descer para esse diretório.
Como eu posso fazer isso?
Para verificar apenas o t1.csv
, você pode usar:
find . -name 't1.csv'
Agora, para ir no primeiro diretório onde t1.csv
arquivo é encontrado, você pode usar:
cd $(dirname $(find . -name 't1.csv' 2>/dev/null | head -1) 2>/dev/null)
if [ -f t1.csv ]
then
echo "File is in target dir"
else
cd 'dirname $(find . -iname 't1.csv')'
pwd
fi
Há uma discussão bastante abrangente sobre isso aqui:
... veja também as páginas man do grep, é claro
Não tenho certeza sobre a segunda parte da sua pergunta, mas espero que você esteja na direção certa.