Один подход к обработке имен файлов специальными символами - как первые символы или другие символы в имени файла переименовываются в более простые имена .
Это можно использовать, даже если необходимо сохранить исходные имена файлов : Переименовать копию имен файлов.
Для этого можно скопировать файлы, а также создать symlinks или hardlinks в файлы и переименовать их. cp
создает symlinks вместо копий с опцией -s
( -l
для жестких ссылок).
Для переименования в чистые имена файлов можно использовать detox
; Он переименовывает файлы для очистки имен файлов в соответствии с различными правилами, определенными в файле detoxrc
. По умолчанию символы UTF8 удаляются; С опцией -s utf_8-only
они заменяются на _
:
$ touch '♫ 漢字カ' ♫foo
$ ls -1
♫foo
♫ 漢字カ
$ detox -s utf_8-only *
$ ls -1
_ ___
_foo
В сочетании с работой над symlinks, как описано выше:
$ mkdir orig
$ cd orig
$ touch '♫ 漢字カ' ♫foo
$ cd ..
$ mkdir clean
$ cd clean
$ cp -s ../orig/* .
$ ll
lrwxrwxrwx 1 14 Oct 8 05:52 ♫foo -> ../orig/♫foo
lrwxrwxrwx 1 21 Oct 8 05:52 ♫\ 漢字カ -> ../orig/♫\ 漢字カ
$ ls -1
♫foo
♫ 漢字カ
$ detox --special -s utf_8-only *
$ ll
lrwxrwxrwx 1 21 Oct 8 05:52 _\ ___ -> ../orig/♫\ 漢字カ
lrwxrwxrwx 1 14 Oct 8 05:52 _foo -> ../orig/♫foo
-121--15001-
Любой процесс, который не блокирует SIGPIPE
, будет убит, если его выход будет направлен на конец записи трубы
Как только головка
закрывает свой вход (т.е. заканчивается), wc
умирает, что занимает меньше времени, чем завершение всей работы.
-121--87765-
$ awk 'FNR==NR{a[$1]=$2;next} ($1 in a) {print $1,a[$1],$2}' file2 file1
aa 45 32
bb 31 15
cc 50 78
Объяснение:
awk
неявно проходит через каждый файл, по одной строке за раз. Поскольку мы дали ему file2
в качестве первого аргумента, он считывается первым. файл 1
считывается в секунду.
FNR = = NR {a [$1] = $2; следующий}
NR
- количество строк, прочитанных awk
до сих пор, и FNR
- количество строк, прочитанных awk
до сих пор от текущего файла. Таким образом, если FNR = = NR
, мы все еще читаем первый именованный файл: file2
. Для каждой строки в file2
назначается a [$1] = $2
.
Здесь a
является ассоциативным массивом , а a [$1] = $2
означает сохранение второго столбца file2, обозначенного $2
, в качестве значения в массиве a
с использованием первого столбца file2, $1
, в качестве ключа.
next
сообщает awk
, чтобы пропустить остальные команды и начать сначала со следующей строки.
($1 в a) {print $1, a [$1], $2}
Если мы попадем сюда, это означает, что мы читаем второй файл: file1
. Если мы видим первое поле строки в file2
, как определяется содержимым массива a
, то мы распечатываем строку со значениями поля 2 из обоих файлов.
Я вижу из эту ссылку , что она находится в Хризи-Бэкпортах и Сайде, но не Джесси, как вы говорите. Версия в Сиде оказалась несколько выше, чем я помню пару недель назад. Большинство пакетов автоматически переходят на jessie через 5 дней, я думаю, так что вы можете либо подождать немного или установить сбоку. Старая версия могла быть удалена из Jessie из-за большой ошибки или уязвимости или что-то в этом роде, или новая версия со стороны была критическая ошибка, вызывающая его быть удалено из jessie. Проблема в том, что, поскольку она несвободна, разработчики Debian не могут её изменить и должны ждать, пока NVIDIA выпустит новый драйвер.
У меня та же проблема, я полагаю, что у нас нет поддержки nvidia legacy в jessie. Пакеты исчезли после недавнего обновления.