utf-8 упорядочивают в консоли

Вот то, как я сделал бы это:

$ (find "Folder A"/* -type d ; find "Folder B"/* -type d) | \
           sed 's#[^/]\+/##' | xargs -I{} mkdir -p "Folder C"/{}

Подробнее

Это генерирует список подкаталогов под "Папкой" и Папкой B", тот список будет похож на это:

Folder A/A2
Folder A/C1
Folder B/B2
Folder B/B3
Folder B/C1

Передача по каналу того вывода через это sed команда удалит "Папку.." бит:

sed 's#[^/]\+/##'

Получающийся в этом:

A2
C1
B2
B3
C1

Примечание: Вышеупомянутое sed смотрит от левой стороны, находя все, что не является наклонной чертой до первой наклонной черты, этими символами затем не заменяют ни с чем, по существу удаляя их.

В этой точке Вы просто должны mkdir в соответствии с каталогом "Folder C", таким образом, мы будем использовать xargs сделать эту повторяющуюся задачу:

xargs -I{} mkdir -p "Folder C"/{}

Это говорит для принятия каждого аргумента как {} и замените им в следующую команду когда-либо, где существует соответствие {}.

Пример

Демонстрационные данные:

$ tree Folder\ {A,B,C}
Folder A
|-- A2
`-- C1
    `-- filea
Folder B
|-- B2
|   `-- fileb
|-- B3
`-- C1
Folder C

Примечание: См., что "Папка C" пуста для запуска.

Теперь мы выполняем нашу команду:

$ (find "Folder A"/* -type d ; find "Folder B"/* -type d) | \
           sed 's#[^/]\+/##' | xargs -I{} mkdir -p "Folder C"/{}

И нас оставляют со следующим:

$ tree Folder\ C
Folder C
|-- A2
|-- B2
|-- B3
`-- C1
3
13.05.2014, 17:11
2 ответа
[1123629]Вы можете указать любой набор символов, который хотите использовать с помощью переключателя [1124004]-таргофоров[1124005].

Есть также эти 2 переключателя, которые могут помочь:

Также вы можете расширить выход с помощью этих переключателей:

6
27.01.2020, 21:11
[1123637]Я могу получить этот выход с помощью этих переключателей:
  • Вы увидите [1124010]\303\251[1124011], если [1124012]дерево[1124013] посчитает, что 0303 и 0251 - недействительные символы (или последовательность символов в вашей локали).
  • Однако это действительно в локалях UTF-8, где [1124014]\303\251[1124015] является [1124016]é[1124017] и в iso-8859-1 или iso-8859- 15 (два общих одинарных байта на символьную диаграмму, распространенных во франкоязычных странах), где [1124018]\303[1124019] является [1124020]Ã[1124021] и [1124022]\251[1124023] является [1124024]©[1124025].
  • Таким образом, здесь подразумевается, что вы находитесь в локали, где кодовая таблица определена только для первых 128-байтных значений, как в ASCII, как в C-локации.
  • Вы можете сказать дереву [1124026] [1124027], что ваша кодовая страница имеет кодировку UTF-8 или iso-8859-15, и тогда она не будет переводить эти 0303 байта на [1124028]\303[1124029].
  • locale -a[1124031] скажет вам, есть ли в вашей системе локаль с кодовой таблицей UTF-8. Тогда можно выбрать такую, как [1124032]fr_FR.UTF-8[1124033]:
  • Но тогда, будет ли она отображаться корректно или нет, будет зависеть от того, что понимает ваш терминальный эмулятор. Если он не настроен на отображение символов UTF-8, то он не будет работать.
  • Если Ваш терминальный эмулятор способен отображать iso-8859-1, то Вы можете сделать [1124034]дерево [1124035] отображением UTF-8 и преобразовать его с помощью [1124036]иконкиv[1124037]:
  • 2
    27.01.2020, 21:11

    Теги

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