заголовок - для цикла над определенными файлами в каталоге, используя Bash




заголовок sh файла (2)

Вы можете использовать отрицательные символы? отфильтровать их:

$ ls -1
a.txt
b.txt
c.png
d.py
$ ls -1 !(*.txt)
c.png
d.py
$ ls -1 !(*.txt|*.py)
c.png

https://code.i-harness.com

В каталоге у вас есть несколько различных файлов - .txt , .sh а затем файлы плана без модификатора .foo .

Если вы используете каталог:

blah.txt
blah.sh
blah
blahs

Как сказать циклу for использовать только файлы без модификации .foo ? Так что "делайте вещи" на файлах, бла и бла, в приведенном выше примере.

Основной синтаксис:

#!/bin/bash
FILES=/home/shep/Desktop/test/*

for f in $FILES
do
    XYZ functions
done

Как вы можете видеть, это эффективно зацикливает все в каталоге. Как я могу исключить .sh , .txt или любой другой модификатор?

Я играл с некоторыми утверждениями if, но мне действительно любопытно, могу ли я выбрать эти неизмененные файлы.

Также может кто-нибудь сказать мне правильный жаргон для этих текстовых файлов без .txt?


Если вы хотите, чтобы это было немного сложнее, вы можете использовать команду find.

Для текущего каталога:

for i in `find . -type f -regex \.\\/[A-Za-z0-9]*`
do
WHAT U WANT DONE
done

объяснение:

find . -> starts find in the current dir
-type f -> find only files
-regex -> use a regular expression
\.\\/[A-Za-z0-9]* -> thats the expression, this matches all files which starts with ./
(because we start in the current dir all files starts with this) and has only chars
and numbers in the filename.

http://infofreund.de/bash-loop-through-files/





for-loop