Как найти файлы, которые содержат новую строку в имени файла?

Предполагая, что двоичным файлом, Вы имеете в виду двоичные данные как в данных с любым возможным значением байта включая 0 и не основываете 2 числа:

Преобразовать из двоичного файла, od (стандарт), xxd (идет vim) или perl unpack прийти на ум.

od -An -vtu1 # for decimal
od -An -vtx1 # for hexadecimal

xxd -p # for hexa

perl -pe 'BEGIN{$\="\n";$/=\30};$_=unpack("H*",$_)' # like xxd -p

# for decimal:
perl -ne 'BEGIN{$\="\n";$/=\30;$,=" "}; print unpack("C*",$_)'

Теперь, для преобразования назад в двоичный файл, awk (стандарт), xxd -r или perl pack:

От десятичного вывода от od -tu1 или perl выше:

LC_ALL=C awk '{for (i = 1; i <= NF; i++) printf "%c", $i}'
perl -ape '$_=pack("C*",@F)'

От hexa perl или xxd -p выше:

xxd -r -p
perl -pe 'chomp;$_=pack("H*",$_)'
10
10.03.2014, 12:19
1 ответ

В сценариях оболочки все является строкой. Вам и нужно указать * , чтобы предотвратить расширение имени файла , но вы не хотите помещать escape-последовательность обратной косой черты в двойные кавычки.

Вы можете просто объединить строки, поместив их сразу после друг друга.

find . -name '*'$'\n''*'

Но для лучшей читаемости вы можете использовать кавычки ANSI-C для всей строки.

find . -name $'*\n*'
13
27.01.2020, 20:02

Теги

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