Найти файлы index.html и переименовать с именем папки и переместить файл на уровень выше

Небольшая помощь в решении рабочего процесса с помощью сценария оболочки с помощью команды find.

  1. Поиск всех файлов index.html в каждой папке.

Мы можем использовать это с командой find для этого.

find ./ -type f -name 'index.html' 
  1. Переименование файла index.html с именами папок.
  2. После переименования файлов я хотел переместить файлы на один уровень вверх.

I» Я застрял при переименовании и перемещении файлов на один уровень вверх.

Поскольку у меня есть более 1 lakh файлов, Xargs пригодится для этого.

Вот код, который у меня есть.

find ./ -type f -name 'index.html' | xargs -P 4 
├── dc
│   ├── adams-morgan
│   │   ├── car-donation
│   │   │   └── index.html
│   │   ├── feed.rss
│   │   ├── index.html
│   │   ├── junk-car
│   │   │   └── index.html
│   │   └── sitemap.xml
│   ├── american-university
│   │   ├── car-donation
│   │   │   └── index.html
│   │   ├── feed.rss
│   │   ├── index.html
│   │   ├── junk-car
│   │   │   └── index.html
│   │   └── sitemap.xml

Помогите ли вы переименовать файлы index.html и переместить файлы на один уровень вверх?

Спасибо заранее Суреш

1
задан 7 May 2020 в 14:48

1 ответ

Вместо xargs вы можете использовать find -exec . Внутри вы можете запустить небольшой sh -Script:

find . -mindepth 2 -type f -name 'index.html' -exec sh -c '
    d="$(dirname "$1")";
    mv "$1" "$d/../$(basename "$d").html";
    rmdir "$d";
' find-sh {} \;
0
ответ дан 19 June 2020 в 21:42

Другие вопросы по тегам:

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