Excluir pastas que correspondem ao nome no caminho diferente

0

Eu tenho 2 pastas nessa situação, /ParentFolder/FolderName/Files.mp4 e /Mount/FolderName/Files.mp4 .

Essencialmente, qualquer coisa em /ParentFolder precisa substituir qualquer pasta com o mesmo nome em /mount . Eu tenho que usar ACDCLI para a cópia real, então eu preciso removê-los primeiro chamando qualquer nome de pasta de /ParentFolder/* e rm -rf /mount/"FolderName"

Se foi uma pasta fácil, mas não sei como dizer, obtenha todos os nomes das pastas do X e exclua se eles existirem em Y.

    
por Tarley 17.05.2016 / 23:34

1 resposta

1

O seguinte script bash deve fazer o que você descreve. Você pode colocar um echo na frente do rm na primeira vez que executá-lo, apenas para ter certeza de que ele fará o que você espera.

#!/bin/bash

if test -d "$1"
then
    from="$1"
else
    echo "could not find source directory \'$1'" >&2
    exit 1
fi

if test -d "$2"
then
    to="$2"
else
    echo "could not find destination directory \'$2'" >&2
    exit 1
fi

for fromdir in "${from}"/*/
do
    todir="${to}${fromdir#"${from}"}"
    if test -d "${todir}"
    then
        rm -rf "${todir}"
    fi
done

Nomeie o script como algo apropriado, como acd_prep , e use chmod +x acd_prep para torná-lo executável. Para as pastas de exemplo na pergunta, você executaria o script como acd_prep /ParentFolder /Mount .

    
por wyrm 18.05.2016 / 00:11