Você pode adicionar uma condição para verificar se o item é uma pasta.
for i in *; do
if [ -d "$i" ] ; then
mv "$i" /home/some_user/some_folder/"$i"
fi
done
Ao usar a linha de comando, posso usar
for i in *txt; do mv "$i" /home/some_user/some_folder/"$i"; done
para mover um grupo de arquivos.
Como posso mover todos os diretórios no diretório atual usando esse mesmo tipo de comando?
Você pode adicionar uma condição para verificar se o item é uma pasta.
for i in *; do
if [ -d "$i" ] ; then
mv "$i" /home/some_user/some_folder/"$i"
fi
done
mv -t /home/some_user/some_folder -- */
-t
instrui mv
a mover todos os objetos listados para o diretório indicado pelo caminho a seguir -t
.
*/
corresponde e é expandido para os nomes de todos os diretórios (não ocultos) no diretório atual. Observe o final /
que restringe as correspondências glob aos diretórios! (Se você precisar incluir nomes de arquivos ocultos começando com .
, ative a opção dotglob
com shopt -s dotglob
.)
find
find . -minepth 1 -maxdepth 1 -type d -exec mv -t /home/some_user/some_folder -- {} +
-mindepth 1 -maxdepth 1
restringe a pesquisa ao conteúdo do diretório fornecido (aqui: .
).
-type d
restringe as correspondências aos diretórios. Isso inclui diretórios ocultos; para excluí-los use ! -name '.*'
.
-exec COMMAND [ARGUMENTS...] {} +
corre COMMAND
com ARGUMENTS...
(se houver) e acrescenta os caminhos de todos os arquivos correspondentes.