Переименование файлов с добавлением имени родительского каталога [закрыто]

0
16.11.2018, 04:13
1 ответ

Если не использовать rename, вот как вы можете поступить сShell (Bash, ksh, ksh93, mksh, zsh) Pattern substitution expansion.

find * -path "archive" -prune -o -type f -exec \
    bash -c 'echo "$1" "archive/${1/\//_}"' find_bash '{}' \;
  • -path "archive" -pruneисключает сам каталог archive.

  • ${1/\//_}заменяет косую черту /на подчеркивание _. 1указывает на первый параметр find_bash, который представляет собой путь к файлу, проходящий через {}.

(Замените echoна cpдля копирования или mvдля перемещения файлов)

Структура каталогов:

.
├── 2017-09-22
│   └── cyber.gz
├── 2017-09-23
│   └── cyber.gz
├── 2017-09-24
│   └── cyber.tar
└── archive

После выполнения команды:

.
├── 2017-09-22
│   └── cyber.gz
├── 2017-09-23
│   └── cyber.gz
├── 2017-09-24
│   └── cyber.tar
└── archive
    ├── 2017-09-22_cyber.gz
    ├── 2017-09-23_cyber.gz
    └── 2017-09-24_cyber.tar
1
28.01.2020, 02:33

Теги

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