Цель 1: Изменить подпапку "thumbs" на "thumb", если на уровне одного уровня.
Пример ввода:
./foo1/thumbs
./foo2/thumbs
./foo2/thumbs
Решение:
find . -maxdepth 2 -type d | sed 'p;s/thumbs/thumb/' | xargs -n2 mv
Выход:
./foo1/thumb
./foo2/thumb
./foo2/thumb
Пояснение:
Используйте find
, чтобы дать вам все «пальцы» папки только один уровень глубоко. Вытяните выход до sed
. Опция p
печатает строку ввода, а остальная часть команды sed
изменяет «большие пальцы» на «большой палец». Наконец, труба до xargs
. Опция -n2
сообщает xargs
использовать два аргументов из трубы и передать их команде mv
.
Выпуск:
Это не поймаешь более глубокие подкаталоги. Вы не можете просто не использовать глубину здесь, потому что find
печатает результат сверху, и поскольку мы заменяем вещи с помощью sed
, перед нами mv
, mv
приведет к ошибке для более глубоких подпапок. Например, ./foo/thumbs/thumbs/ не будет работать, потому что mv
сначала позаботится ./foo/thumbs и сделает это ./foo/thumb, но затем следующая выходная строка приведет к ошибке, потому что ./foo/thumbs/thumbs/больше не существует.
Цель 2: Чтобы изменить все вложенные папки «превью» к «большой палец» независимо от того, насколько глубоко.
Пример ввода:
./foo1/thumbs
./foo2/thumbs
./foo2/thumbs/thumbs
./foo2/thumbs
Решение:
find . -type d | awk -F'/' '{print NF, $0}' | sort -k 1 -n -r | awk '{print $2}' | sed 'p;s/\(.*\)thumbs/\1thumb/' | xargs -n2 mv
Выход:
./foo1/thumb
./foo2/thumb
./foo2/thumb/thumb
./foo2/thumb
Используйте find
, чтобы предоставить вам все «большие пальцы» вложенных папок. Выполните вывод на awk
, чтобы напечатать число '/' в каждом пути плюс исходный вывод. sort
вывод численно, в обратном порядке (чтобы поместить самые глубокие дорожки сверху) на число '/' s. Выполните сортировку списка до awk
, чтобы удалить счетчики из каждой строки. Вытяните выход до sed
. Опция p
печатает строку ввода, а остальная часть команды sed
находит последнее появление «больших пальцев» и изменяет только его на «большой палец». Поскольку мы работаем с отсортированным списком в порядке от самого глубокого до самого низкого уровня, это обеспечит mv
правильными командами. Наконец, труба до xargs
. Опция -n2
сообщает xargs
использовать два аргументов из трубы и передать их команде mv
.
Пожалуйста, переместите свой вопрос в [su]. Здесь [вне темы] (http://stackoverflow.com/help/on-topic). –
Я не знаю, как двигаться, я искал, но я не могу найти информацию. –
Удалить здесь, переслать сообщение. –