4 votes

Y a-t-il une limite d'éléments pour l'explorateur de fichiers?

Ceci est une question concernant Xubuntu 14.04.

Pour faire court, j'ai dû utiliser le programme recoverjpeg pour restaurer des photos que j'avais oublié de sauvegarder après une installation fraîche. Cela a résulté en 850k fichiers placés dans mon dossier personnel, et maintenant il ne se charge pas. Quand je vais dans home/[nom d'utilisateur], ça tourne indéfiniment, même après un redémarrage et affiche simplement "chargement du contenu du dossier". Cela fait des heures. Devrais-je juste attendre ou y a-t-il une autre application de dossier que je peux charger pour rendre ces fichiers accessibles? Ce sont des fichiers image très importants donc je ne peux pas risquer de les perdre. Cela signifie aussi que je ne peux rien charger dans le dossier personnel (Documents, téléchargements, etc) dans l'interface graphique OU dans le terminal.

Tout conseil est apprécié. Je ne sais pas quoi faire à ce stade. Les fichiers ne sont pas les miens et si je ne peux pas les récupérer, je pourrais en mourir. Merci.

6voto

Stewart Points 1385

La solution la plus simple serait de déplacer les fichiers dans un répertoire différent. De cette façon, au moins votre $HOME se chargera. Ouvrez un terminal et exécutez ces commandes :

mkdir jpeg-dir
find . -maxdepth 1 -type f -iname '*jpg' -or -iname '*jpeg' -exec mv {} jpeg-dir +

Cela déplacera tous les fichiers dont le nom se termine par jpg, jpeg, JPEG, JPG etc, vers ~/jpeg-dir. Cela devrait vous permettre de charger votre répertoire personnel normalement.

Cependant, cela signifie que vous aurez désormais des problèmes pour voir le répertoire jpeg-dir. Maintenant que vous avez tout dans ~/jpeg-dir, vous pouvez créer des sous-répertoires, chacun contenant par exemple 5000 fichiers :

cd ~/jpeg-dir
jpegs=(*)
c=0; 
for((i=0;i<${#jpeg[@]};i+=1500)); do 
    let c++ 
    mkdir -p dir"$c"
    mv "${jpegs[@]:$i:1500}" dir"$c"
done

5voto

Rinzwind Points 270388

Ce qui se passe, c'est que le gestionnaire de fichiers crée une liste (avec ls) et cela va prendre beaucoup de temps lorsqu'il y a beaucoup de fichiers.

La première chose à faire est de nettoyer /home/$USER/. Passez en mode console.

cd ~
mkdir tmp

Cela créera un répertoire tmp dans votre /home/$USER/.

Maintenant, faites un ls -l | more et appuyez sur entrée pour avoir une idée de l'extension de ces fichiers; en général, ces fichiers auront une extension spécifique. Supposez qu'ils se terminent tous par *.ext (remplacez par ce dont vous avez besoin dans la commande ci-dessous). Ensuite, déplacez tous ces fichiers vers ~/tmp/ avec:

echo !(*.ext) | xargs mv -t ~/tmp/

Faites attention à ce que vous tapez à l'intérieur de (*.ext) et assurez-vous d'inclure tout ce qui doit rester dans /home/$USER/.

Cela vous donnera un Bureau fonctionnel et /home/. Si vous faites un ls à l'intérieur de ~/tmp/, vous rencontrerez toujours des problèmes.


Deuxième partie du problème. La méthode la plus simple serait d'avoir un script pour mettre tous ces fichiers dans des sous-répertoires: cette réponse sur SO semble parfaite pour cela.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X