Запись содержания от файла до другого файла на временных интервалах набора с помощью разделителей

Согласно 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 выполняется на каждом файле ({}) вместо только однажды для всех имен файлов, которые могут быть сделаны соответствовать на командной строке ({} +).

2
12.07.2014, 22:13
2 ответа
[

]Я бы преобразовал разделитель в новые строки для достижения "строк за строкой разделителей []или[]", что-то вроде:[

] [

]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
]
2
27.01.2020, 22:06
[

]Пример одного питонского скрипта, откуда можно начать писать нужный скрипт, читая слова из первого файла и распечатывая их в 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
]
1
27.01.2020, 22:06

Теги

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