Согласно man bash
:
globstar
If set, the pattern ** used in a pathname expansion context will match all files and zero or more directories and sub‐
directories. If the pattern is followed by a /, only directories and subdirectories match.
Другими словами, если у Вас будет cd'd к каталогу с jpgs, то затем ни один не будет соответствовать потому что **/97*.jpg
только соответствия jpgs в подкаталоге.
Обходное решение: использовать find
:
find . -name '*.jpg' -exec cp -a -t destination/ {} +
Это находит все *.jpg
файлы на любой глубине под текущим каталогом (.
) и копирует их в destination/
.
Опция -t dir
говорит cp
скопировать файлы в место назначения dir
. Если Ваш cp
не поддерживает это, существует обходное решение:
find . -name '*.jpg' -exec cp -a {} destination/ \;
Это менее 'эффективно', чем предыдущая версия потому что cp
выполняется на каждом файле ({}
) вместо только однажды для всех имен файлов, которые могут быть сделаны соответствовать на командной строке ({} +
).
]Я бы преобразовал разделитель в новые строки для достижения "строк за строкой разделителей []или[]", что-то вроде:[
] []Script:[
] [echo -e "foo:bar\nbaz" > myfile
i=0
while read -r foo; do
echo $i $foo
i=$((i += 1))
done < <(cat myfile | tr ':' '\n')
]
[]Output: [
] [0 foo
1 bar
2 baz
] ]Пример одного питонского скрипта, откуда можно начать писать нужный скрипт, читая слова из первого файла и распечатывая их в stdout, но можно открыть другой файл и написать там[
] [#!/usr/bin/python
import time
File = open("words", "r")
Wordlist = File.readline().split()
n = 0
while True:
time.sleep(2)
print "File2 = " + Wordlist[n] #you can change this
n = n + 1
if n == Wordlist.__len__():
break
]