как работать рекурсивно, “затрагивают пустой”, если папка пуста?

Существует kludgey способ зафиксировать это. Исправлять поведение mv, cp, и mkdir, добавьте это к своему .zshrc файлу:

alias mv='nocorrect mv'
alias cp='nocorrect cp'
alias mkdir='nocorrect mkdir'

Это не идеальная фиксация по нескольким причинам, не, наименьшее количество которого - то, что может быть несколько раз, когда Вы действительно хотите исправление орфографических ошибок для a mv команда. Например, если Вы пытались выполниться:

mv directory_a/sub/sub/some_file directory_b/sub/sub/

но Вы написали один c орфографическими ошибками из каталогов и закончили тем, что ввели

mv directory_a/sub/sub/some_file directry_b/sub/sub/

исправление орфографических ошибок, возможно, было полезно. (Это - очевидно, изобретенный пример, но Вы понимаете.)

1
11.06.2013, 23:00
3 ответа

Выполненный touch empty в каталоге.

find ... -execdir touch empty \;
2
27.01.2020, 23:29
  • 1
    Тот выше только добавленного пустой на"." (текущей) папке. Я выполняю это на Linux, если это помогает...? Я натыкался к сообщению в блоге, которое утверждало, что существуют некоторые различия между MacOSX и Linux. Здесь: aplawrence.com/Unixart/find_execdir.html –  hemppa 11.06.2013, 23:30
  • 2
    Вы выполняете команду точно, как записал Ignacio? Я думаю, что он имеет в виду, чтобы Вы работали find . -type d -empty -execdir touch empty \; –  evilsoup 12.06.2013, 00:01
  • 3
    благодарит за разъяснение. Я делал его неправильно, но тем не менее это не добавит, что пустой файл ко всем папкам... на самом деле добавляет его только в"." - папка и "./level1 / "-папка, которая является btw, не пустым. Это странно, найти. - тип d - пустые дисплеи все корректные папки, хотя.. –  hemppa 12.06.2013, 00:23
  • 4
    я только что протестировал его, и я получаю то же поведение... причудливо, это, кажется, касается 'пустых' файлов в каталоге один выше пустых каталогов. –  evilsoup 12.06.2013, 00:56
find . -type d -empty -exec touch {}/empty \;
1
27.01.2020, 23:29
  • 1
    Это должно быть принятым ответом. Я попробовал и это и что Ignacio записал, и эти работы. Другой использует-execdir опцию, которая всегда выполняет команду в каталоге, содержащем файл. Так как "файл" является пустым каталогом, он работает touch empty в каталоге, содержащем пустой каталог, не сам пустой каталог. Rick разобрался в нем в своем ответе. –  tralston 11.06.2015, 21:14

Обязательный 'можно сделать это с ударом' ответ:

shopt -s globstar nullglob
for f in ./**/; do [[ $(echo "$f"*) == '' ]] && touch "$f"empty; done

Globstar имеет в виду это ** расширяется в 'каждый файл в этом каталоге, рекурсивно'; **/ средства, которые это только развернет до каталогов, а не регулярных файлов (так как имена файлов не могут содержать наклонные черты вправо).

Nullglob подразумевает, что шарики, которые ничему не соответствуют, расширяются до nullbyte. Тест проверяет, происходит ли это (который означал бы, что нет ничего в каталоге); если тест оценивает к истинному (что означает, что нет ничего в каталоге), то это touches empty в каталоге.

0
27.01.2020, 23:29

Теги

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