Acho que seria melhor usar find
aqui:
for FILE in $DIR
do
find $DIR -iname '*.txt' -exec cp -fv {} ${DIR}/backup/${FILE} \;
done
Você pode adicionar a opção --parents
a cp
se quiser preservar a estrutura de diretórios.
Estou tentando executar um loop for que copia todos os arquivos em um diretório e, em seguida, os coloca em um diretório de backup. Existem vários subdiretórios com nomes variados, então eu pensei que deveria usar vários curingas para que eu não tivesse que listar todos eles e adicionar outro loop para dentro. Este é o meu script
#!/bin/bash
DIR="/home/users/data/*"
for file in $DIR
do
cp "$file"/**/**/*.txt* "$DIR"/backup/"$file"
done
Quando eu o executo, o script não pode entrar nos subdiretórios e acha que o diretório é
/directory1/**/**/*.txt*
Qualquer conselho seria muito apreciado
Acho que seria melhor usar find
aqui:
for FILE in $DIR
do
find $DIR -iname '*.txt' -exec cp -fv {} ${DIR}/backup/${FILE} \;
done
Você pode adicionar a opção --parents
a cp
se quiser preservar a estrutura de diretórios.
Se você quiser apenas duplicar /home/users/data
em /home/users/data/backup
:
rsync -ai --exclude=/backup/ /home/users/data/ /home/users/data/backup
Isso também excluiria o diretório backup
de ser copiado ao executar novamente o comando. Observe que o diretório de origem (e o diretório no padrão de exclusão) deve ter barras no final.