У меня есть большое количество маленьких файлов, расположенных в структуре каталогов следующим образом:
/A/B/C/f
Существует 11 каталогов на уровне A, каждый из которых содержит около 100 каталогов на уровне B, каждый из которых содержит около 30 каталогов на уровне C, каждый из которых содержит один файл f.
Как мне переместить все файлы на один уровень вверх? Например, учитывая этот набор файлов ...
/ A / B / C / f1
/ A / B / C / f2
/ A / B / C / f3
/ A / B / C / f4
Я хочу, чтобы каталог /A/B/
содержал 4 файла, от f1 до f4. Удаление каталогов C не является необходимым.
Я надеюсь , что это решаемая проблема, возможно , с привлечением find
, xargs
и whatnot
. Любые идеи?
Ура,
Джеймс
Мое первое предположение
до тех пор, пока вы не укажете,
-depth
все должно быть в порядке. Я НЕ пробовал, поэтому сначала проверьте его, прежде чем совершить это.источник
mv
команды выполняются в текущем каталоге, поэтому..
не делайте то, что вы надеетесь. Смотрите мой ответ для решений. @ jl6: оболочка не имеет ничего общего с..
ядром.Если вы хотите переместить только файлы, находящиеся в конечных каталогах (т.е. вы не хотите перемещать
/A/B/file
их,/A
если ониB
содержат подкаталоги), то вот несколько способов сделать это:Оба требуют этого
Этот работает:
Это будет быстрее, но оно не любит пустые исходные каталоги:
источник