Se não usar rename
, veja como você pode fazer com 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
está excluindo o diretórioarchive
. -
${1/\//_}
está substituindo Slash/
por Underscore_
. O1
aponta para o parâmetrofind_bash
first, que é o caminho do arquivo passando por{}
.
(Substitua echo
por cp
para copiar ou mv
para mover os arquivos)
Estrutura de diretórios:
.
├── 2017-09-22
│ └── cyber.gz
├── 2017-09-23
│ └── cyber.gz
├── 2017-09-24
│ └── cyber.tar
└── archive
Depois de executar o comando:
.
├── 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