Encontre e mova o diretório para um novo diretório baseado no nome [duplicado]

1

Gostaria de mover todas as pastas contidas na pasta "/ example" com o nome de "_jony" para uma nova chamada de diretório "/ jony". Eu tentei de várias maneiras sem sucesso! Seria ótimo ter algumas ajudas. Obrigado!

    
por steve 28.07.2015 / 21:17

2 respostas

1

mv path_to_example_dir/*_jony /jony
    
por 28.07.2015 / 21:36
0

Se isso é algo que você precisa fazer com certa frequência, provavelmente achará útil ter um script para fazer isso. A seguir, um script Bash montado rapidamente, que pode fazer o trabalho:

#!/bin/sh
dir_str=$1
src_dir=$2
dest_dir=$3
ret_code=0
if [ ! -e $src_dir ] ; then
    echo "Could not find source directory $src_dir."
    let "ret_code += 1"
fi
if [ ! -e $dest_dir ] ; then
    echo "Could not find destination directory $dest_dir. (Use mkdir to create.)"
    let "ret_code += 2"
fi
if [ $ret_code -eq 0 ] ; then
    for dir_to_move in $src_dir/*$dir_str ; do
        echo "For '$dir_to_move':"
        cmd="mv $dir_to_move $dest_dir"
        echo "Executing: $cmd"
        $cmd
    done
fi
exit $ret_code

Use seu editor favorito para criar o script.

Embora não seja tão avançado, ele tem alguma flexibilidade, pois você pode especificar o texto nos nomes de diretório a serem movidos e os diretórios de origem e de destino. Se você nomeou o arquivo que contém o script "mv_dirs.sh", então, para executá-lo para atingir sua meta declarada, você pode inserir algo assim:

sh mv_dirs.sh _jony /example /jony

Para realmente fazer isso funcionar, você precisará de permissão de gravação no diretório raiz (/), o que os usuários normais normalmente não têm.

    
por 28.07.2015 / 21:47