Мне нужно найти все TIFF в каталоге, рекурсивно, но игнорировать некоторые артефакты (в основном все скрытые файлы), которые также заканчиваются словами« .tif
». Эта команда:bash `find` escaping
find . -type f -name '*.tif' ! -name '.*'
работает именно так, как я хочу это в командной строке, но внутри сценария bash он ничего не находит. Я пробовал заменить !
на -and -not
и - я думаю - почти каждая переходящая перестановка, о которой я могу думать и/или рекомендовал googleshpere, например. .\*
, оставляя одинарные кавычки и т. Д. Очевидно, что я что-то пропускаю, любая помощь приветствуется.
EDIT: вот значительная часть скрипта; каталог, на котором выполняется поиск, параметризуется, но я отлаживаю его жестко закодированным; это не имеет никакого значения:
#!/bin/bash
RECURSIVE=1
DIR=$1
#get the absolute path to $DIR
DIR=$(cd $DIR; pwd)
FIND_CMD="find $DIR -type f -name '*.tif' ! -name '.*'"
if [ $RECURSIVE == 1 ]; then
FIND_CMD="$FIND_CMD -maxdepth 1"
fi
for in_img in $($FIND_CMD | sort); do
echo $in_img # for debugging
#stuff
done
пожалуйста включает выписку из вашего сценария – pb2q
вы звоните скрипт из каталога, который содержит '.tiff' файлов? –
Каков рабочий каталог вашего скрипта? Вот где команда 'find' ищет файлы, соответствующие '* .tif'. – chepner