Я использую find для поиска файлов в каталоге или его подкаталогах. find . -iname '*.csv'
, и это дает мне следующий вывод
./2012/t1.csv
./2012/t2.csv
./2013/t1.csv
Теперь я хочу проверить в скрипте, находится ли файл t1.csv
в текущей папке или в одном из подкаталогов. Если он находится в подкаталоге, мой сценарий должен перейти в этот каталог. Как я могу это сделать?
Чтобы проверить только t1.csv
, вы можете использовать:
find . -name 't1.csv'
Теперь, чтобы перейти в первый каталог, где найден файл t1.csv
, вы можете использовать:
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
Здесь есть довольно подробное обсуждение:
... см. также справочные страницы grep курса
Не уверен насчет 2-й части вашего вопроса, но надеюсь, что отправит Вы в правильном направлении.