За исключением файла Bash из модификации сама

Самый безопасный способ работы с произвольными именами файлов - использовать find -exec вариант. Это запустит указанную команду для каждого файла / каталога, найденного find (из man find ):

       -exec command ;
          Execute  command;  true  if 0 status is returned.  All following
          arguments to find are taken to be arguments to the command until
          an  argument  consisting of `;' is encountered.  The string `{}'
          is replaced by the current file name being processed [...]

Итак, вы можете сделать:

find "$REP_RECEP" -name "*META*" -exec awk -F'|' '{print NF; exit}' {} \;
0
20.11.2018, 22:10
2 ответа

Пример подхода find. -type f ! -path $0. Обратите внимание, что сценарий сообщает только foo.shв каталоге "d" . Не foo.shв текущем каталоге.

$ find. -print
.
./a
./b
./c
./foo.sh
./d
./d/foo.sh
$ cat foo.sh
#!/bin/bash
for f in $(find. -type f ! -path $0); do
echo $f
done
$./foo.sh
./a
./b
./c
./d/foo.sh
$

В качестве альтернативы попробуйтеfor f in $(find. -type f | grep -v "^\./foo\.sh$"); do

1
28.01.2020, 02:41

Что не так с:

for f in $(find. -type f); do
 case $f in 
  */$0|$0)
     continue
  ;;
  *)
     echo 'Do something'
  ;;
 esac
 fi
done 
0
28.01.2020, 02:41

Теги

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