Как разделить структуру каталогов с командной строкой (или сценарий)

$> ghc -e '20 + 5'
25
it :: Integer

Также ghci, это - Компилятор Глазго-Haskell в интерактивном режиме (ghc --interactive, в противоположность ему, оценивая выражение с -e), делает для захватывающего "калькулятора":

$>ghci
GHCi, version 7.8.3: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Prelude> pi
3.141592653589793
Prelude> ceiling pi
4
Prelude> compare 1 2
LT
1
08.04.2013, 05:02
2 ответа

С инструментами GNU:

cd that-dir &&
  find . -mindepth 2 ! -type d -exec mv -it . {} +
1
27.01.2020, 23:54

Перейдите к родительскому каталогу и работайте

mv -- */* .

(-- только необходимо, если существуют подкаталоги, имя которых начинается -)

Если существуют файлы в подкаталогах, которые начинаются . (отметьте точкой файлы), или подкаталоги, имя которых начинается ., необходимо будет переместить их также:

mv -- */* */.[!.]* */..?* .
mv -- .[!.]*/* .[!.]*/.[!.]* .[!.]*/..?* .
mv -- ..?*/* ..?*/.[!.]* ..?*/..?* .

Удостоверьтесь, что нет никаких конфликтов, иначе последний файл, который Вы перемещаете, тихо перезапишет ранее перемещенный файл с тем же именем. Передайте -i опция к mv (т.е. mv -i */* .) быть запрошенным в случае конфликта.

Можно затем удалить подкаталоги:

rmdir */

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

find */ -type f -exec mv -i {} . \;

или, немного быстрее:

find */ -type f -exec sh -c 'mv -i -- "$@" "$0"' . {} +

Еще быстрее, в невстроенной системе Linux:

find . -mindepth 2 -type f -exec mv -it . {} +
0
27.01.2020, 23:54

Теги

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