Удалите символ авторского права

Это должно быть портативно и работать с именами файлов, содержащими пробелы, новые строки или другое нечетное продвижение символов к известно капризному ls поведению.

filename="whatever file name"
find . -name "$filename" -exec sh -c 'ls -di "$0" | head -1' {} \;
2
19.11.2011, 01:43
2 ответа

Если это - единственная проблема, я соглашаюсь с @Kevin; если бы весь канал является non-UTF-8, я, возможно, посмотрел бы на tr -cd SET удалить все символы не в НАБОРЕ, или iconv -f (encoding) -t utf-8 если Вы знаете кодирование канала.

2
27.01.2020, 22:01
  • 1
    Посмотрите предупреждение о TR в комментарии к ответу Ladadadada... (касательно TR Википедии (Unix).. ищите 'не Unicode, совместимый'... –  Peter.O 19.11.2011, 05:59
  • 2
    Да и нет. tr безопасно, если Вы хотите удалить вниз к ASCII или подмножеству этого: 8-й бит установлен, если и только если каждый смотрит на многобайтовое представление. –  Ulrich Schwarz 20.11.2011, 10:28

tr -d '©' работы для простого удаления его.

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

sed 's/©/(c)/g'

2
27.01.2020, 22:01
  • 1
    Предупреждение!.. tr работы над уровнем байта, не на символ. Это означает это tr -d '©' сделает разные вещи в зависимости от который локаль tr выполняется в. Например, типичные 'отклоняют локаль средств UTF-8 это © твердость к 2 байтам '\xC2' и '\xA9'.. tr удалит все случаи любого байта... Это удалит '\C2' из § и '\A9' от é, и от любой из многих других возможностей. –  Peter.O 19.11.2011, 05:43
  • 2
    Спасибо за добавление, которое освободило. Я понятия не имел tr проложивший себе путь. –  Ladadadada 19.11.2011, 17:37

Теги

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