Удалить ведущие пробелы из файлов, папок и их подпапок

Я не верю, что вы можете остановить рендеринг.

3 вещи, которые я знаю о том, что вы можете использовать, - это ...

Вид -> Сообщения как обычный текст; Не использовать предварительный просмотр (включение / выключение f8). Вы также можете включить инструменты-> параметры-> расширенные-> конфиденциальные-> блокировать загрузку удаленных изображений, чтобы прекратить загрузку удаленных изображений (что также убивает возможность выполнения кода оттуда).
1
задан 12 May 2016 в 12:44

2 ответа

Как отмечалось в других ответах, основная проблема заключается в том, что ^ привязывает начало пути, а не начало имени файла. Существует несколько способов обойти это с помощью find и rename: вероятно, самым безопасным было бы использовать -execdir вместо -exec, чтобы все компоненты пути уменьшились до ./, а затем заменили шаблон \./\s+

Кроме того, если вы переименовываете каталоги, возможно, включая предков других файлов / каталогов, которые должны быть переименованы, тогда вы должны сделать обход глубины.

Поместить его вместе,

find . -depth -name ' *' -execdir rename -vn -- 's#\./\s+##' {} +

или (функционально эквивалентно, но немного легче увидеть, что происходит), используя «lookbehind» с нулевой длиной для разделителя путей

$ find . -depth -name ' *' -execdir rename -vn -- 's#(?<=\./)\s+##' {} +
./ bar2 renamed as ./bar2
./ foo2 renamed as ./foo2
./ bar1 renamed as ./bar1
./ foo1 renamed as ./foo1
./ bar renamed as ./bar

[ПРИМЕЧАНИЕ : удалите -n, как только вы убедитесь, что он делает то, что вы хотите]

2
ответ дан 23 May 2018 в 11:11
  • 1
    Используя это выражение, я получаю: – Sascha 12 May 2016 в 15:19
  • 2
    извините, это результат: Использование выражения: sub {use feature ': 5.10'; s # (? & lt; =. /) \ s + ##} 'bar' неизменный 'bar1' неизменный 'bar2' неизменный 'foo2' неизменный – Sascha 12 May 2016 в 15:26
  • 3
    Извините - я не узнаю это сообщение об ошибке. Какую версию Ubuntu вы используете? – steeldriver 12 May 2016 в 15:50
  • 4
    Мой друг, на чьей машине я ssh'd прямо сейчас сказал мне, что это фактически OSX 10.6.8 с переименованием BSD. Должен был проверить мужчину заранее, извините. Это объясняет сообщение об ошибке. Ваше решение отлично подходит для Linux – Sascha 12 May 2016 в 18:25
  • 5
    @Sascha Я как бы заподозрил столько же - на некоторых системах, версия Ubuntu rename (которая на самом деле является скриптом perl) доступна под именем prename - не уверен, что это продолжается до OSX, хотя – steeldriver 12 May 2016 в 18:28

Я думаю, проблема связана с выходным форматом find, который включает полный путь. Таким образом, для bar2 у вас будет

./ foo1/ foo2 /bar2

, что переименование не будет корректно отображаться.

Решение состоит в том, чтобы использовать скрипт для каждой реплики таким образом:

[ f2]
1
ответ дан 23 May 2018 в 11:11

Другие вопросы по тегам:

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