Como mover arquivos não abertos para outra pasta

0

Eu sou iniciante no Linux e quero criar um script no bash para verificar quais arquivos estão abertos em uma pasta e mover quaisquer outros arquivos - aqueles que não estão abertos para outra pasta.

    
por Petr 26.03.2015 / 17:49

1 resposta

0

Não consigo pensar em uma maneira totalmente elegante de fazer isso. Eu estava esperando que find tivesse alguma facilidade para isso. Isso teria facilitado isso. Mas eu não encontrei uma opção para identificar um arquivo como aberto, então eu fiz um pequeno script para baixar a lógica.

#!/bin/sh
DIR=/some/files
NEW_DIR=/some/new/files
OPEN_FILES=$(lsof -Fn $DIR/* | grep ^n | cut -c2- | sort -u)
for file in $DIR/*; do
    if echo "$OPEN_FILES" | grep -q $file; then
        echo "$file is opened - not moving"
        continue
    fi
    mv $file $NEW_DIR/
    echo "$file moved"
done

É meio grosseiro, honestamente, mas espero que seja a base do que você quer e você pode modificar mais conforme necessário. Se alguém souber de uma maneira de fazer isso com find , por favor entre em contato. find with -exec mv opção é realmente boa para coisas como essa.

    
por 08.04.2015 / 19:59