Bash - Как я циклично выполняюсь через подкаталоги и извлекаю файлы

Согласно удалению цветов от вывода, Вы управляете, должен быть:

printf "\n$(tput setaf 6)| $(tput sgr0)$(tput setaf 7)Sourcing files...\033[m\n" |\
sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[mGK]//g" |tee install.log
w/o "-r"
sed "s/\x1B\[\([0-9]\{1,2\}\(;[0-9]\{1,2\}\)\?\)\?[mGK]//g"

Поскольку удобство обосновывает, что Вы могли также создать псевдоним в /etc/profile

alias stripcolors='sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[mGK]//g"'
w/o '-r'
alias stripcolors='sed "s/\x1B\[\([0-9]\{1,2\}\(;[0-9]\{1,2\}\)\?\)\?[mGK]//g"'

[Править]

С данным производит Вас, может проверить это собой:

#!/usr/bin/perl

while ($line=) {
    $line =~ s/^[0-9a-f]+: //;
    while ($line =~ s/([0-9a-f]{2})(?=[0-9a-f]{2}| )//) {
      print chr(hex($1));
    }
}
__DATA__
0000000: 1b5b 316d 1b5b 3333 6de2 9aa0 2020 5761 .[1m.[33m... Wa
0000010: 726e 696e 673a 201b 2842 1b5b 6d4e 6f20 rning: .(B.[mNo
0000020: 2f55 7365 7273 2f61 7077 2f2e 6261 7368 /Users/apw/.bash
0000030: 2066 6f75 6e64 2e21 0a found.!.

Вывод:

$ perl checkerbunny|xxd
0000000: 1b5b 316d 1b5b 3333 6de2 9aa0 2020 5761  .[1m.[33m...  Wa
0000010: 726e 696e 673a 201b 2842 1b5b 6d4e 6f20  rning: .(B.[mNo 
0000020: 2f55 7365 7273 2f61 7077 2f2e 6261 7368  /Users/apw/.bash
0000030: 2066 6f75 6e64 2e21 0a                    found.!.

$ perl checkerbunny|stripcolors|xxd
0000000: e29a a020 2057 6172 6e69 6e67 3a20 1b28  ...  Warning: .(
0000010: 424e 6f20 2f55 7365 7273 2f61 7077 2f2e  BNo /Users/apw/.
0000020: 6261 7368 2066 6f75 6e64 2e21 0a         bash found.!.

2
26.09.2014, 16:22
4 ответа
find 10K_TIF -iname "*.tif"

И если вы хотите обработать каждый файл, например, найти тип содержимого файла

find 10K_TIF -iname "*.tif" -print0 | xargs -0 -n1 file

или вычислить md5sum

find 10K_TIF -iname "*.tif" -print0 | xargs -0 -n1 md5sum
1
27.01.2020, 22:00

Можно использовать find:

find 10K_TIF -iname '*TIF'

Для того, чтобы обвести результаты и что-то сделать с каждым изображением, можно использовать:

find 10K_TIF -iname '*TIF' | while read tif; do echo "Found: $tif"; done

Вышеуказанное предполагает вменяемые имена файлов, без пробелов или странных символов. Если имена файлов могут содержать такие символы, используйте вместо этого:

find 10K_TIF -iname '*TIF' -print0 | 
    while IFS= read -r -d '' tif; do echo "Found: $tif"; done
2
27.01.2020, 22:00

Если вы хотите (только) перечислить все файлы * .tiff во всех подкаталогах с помощью bash , проще всего использовать шаблон ** (globstar) :

shopt -s globstar
ls **/*.tiff
1
27.01.2020, 22:00

Вы можете использовать Найти для поиска всех файлов и передача их в любую команду, вы хотите использовать с помощью

find 10K_TIF -iname "*.tif" -type f -print0 | xargs -0 -n1 <command>

, это поиск 10K_TIF и Все подкаталоги, соответствующие всему, что заканчиваются .tif (нечувствительны к регистру) и , является обычным файлом (т. Е. Каталоги, специальные файлы и символические ссылки, заканчивающиеся с .tif .tif .tif .tif не обрабатываются).

Если вы хотите обрабатывать, например, символические ссылки и обычные файлы, вы можете использовать

find 10K_TIF -iname "*.tif" \( -type f -o -type l \) -print0 | xargs -0 -n1 <command>
0
27.01.2020, 22:00

Теги

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