Как проверить, находится ли файл в текущем каталоге или его подкаталогах?

Я использую find для поиска файлов в каталоге или его подкаталогах. find . -iname '*.csv', и это дает мне следующий вывод

./2012/t1.csv
./2012/t2.csv
./2013/t1.csv

Теперь я хочу проверить в скрипте, находится ли файл t1.csv в текущей папке или в одном из подкаталогов. Если он находится в подкаталоге, мой сценарий должен перейти в этот каталог. Как я могу это сделать?

2
задан 2 April 2015 в 22:57

3 ответа

Чтобы проверить только t1.csv, вы можете использовать:

find . -name 't1.csv' 

Теперь, чтобы перейти в первый каталог, где найден файл t1.csv, вы можете использовать:

cd $(dirname $(find . -name 't1.csv' 2>/dev/null | head -1)  2>/dev/null)

enter image description here

0
ответ дан 2 April 2015 в 22:57
if [ -f t1.csv ]
then
    echo "File is in target dir"
else
    cd `dirname $(find . -iname 't1.csv')`
    pwd
fi
0
ответ дан 2 April 2015 в 22:57

Здесь есть довольно подробное обсуждение:

... см. также справочные страницы grep курса

Не уверен насчет 2-й части вашего вопроса, но надеюсь, что отправит Вы в правильном направлении.

0
ответ дан 2 April 2015 в 22:57

Другие вопросы по тегам:

Похожие вопросы: