Duas soluções possíveis que vêm à mente.
1. Itere em todos os diretórios em LOREM
e crie links simbólicos para $HOME
cd "$HOME/LOREM"
for item in *
do
test -d "$item" || continue
mv -f "$HOME/$item" "$HOME/$item.DELETE_ME_LATER" 2>/dev/null
ln -s "$HOME/LOREM/$item" "$HOME/$item"
done
# Once you are happy that only the correct files have been replaced
# rm "$HOME"/*.DELETE_ME_LATER
Você pode colocar o prefixo rm
e ln
com echo
(por exemplo, echo rm -f "Users/masi/$item"
) para ver o efeito do script antes de fazer qualquer alteração
2. Processe o conjunto de arquivos existentes e converta-os em links simbólicos apropriados
Este vai precisar de alguma heurística (adivinhação), porque não há nada concreto que identifique um arquivo que deveria ser um link simbólico.
Algo parecido com isso pode funcionar
for file in *
do
# Skip files that we have already processed
[[ $file =~ DELETE_ME_LATER ]] && continue
# Look for a path-like string in the file
path=$(grep "^$HOME/" "$file")
if test -d "$path"
then
# It is a directory
mv -f "$file" "$file.DELETE_ME_LATER"
ln -s "$HOME/LOREM/$file" "$file"
fi
done
# Once you are happy that only the correct files have been replaced
# rm *.DELETE_ME_LATER
Novamente, você pode prefixar as instruções mv
e ln
com echo
para ver o efeito sem aplicar nenhuma alteração.