J'ai essayé de comprendre cela par moi-même. Voici la commande que j'ai utilisée dans le terminal:
find . -name "*.jpg" -exec mv {} pictures \;
Je n'ai pas créé de répertoire nommé images en premier. Ce qui s'est passé, c'est qu'un fichier nommé pictures.gif a été créé. At-il trouvé les fichiers puis les a-t-il écrasés lors de leur déplacement?
Quel est ce fichier pictures.gif qui a été créé à la suite de cette commande?
Les fichiers sont-ils toujours sur le disque quelque part?
command-line
find
jtnewhou
la source
la source
/
y! Toujours! Il ne peut alors s'agir que d'un répertoire.Réponses:
Premièrement: arrêtez d'utiliser ce lecteur maintenant . Il est correct de le remonter en lecture seule, assurez-vous simplement de ne plus écrire. Oui, vous avez supprimé les photos. Ils peuvent être récupérables, mais plus vous continuez à utiliser ce lecteur, moins vous avez de chances de récupérer quoi que ce soit.
Votre commande a été exécutée
mv pic1.jpg pictures
,mv pic2.jpg pictures
etc. Chaque invocation demv
écrase le fichier actuellement nommépictures
par une autre image.Déplacer un fichier (dans le même système de fichiers) signifie le détacher du répertoire qui le contient et le joindre au répertoire cible sous le nouveau nom. Aucune donnée de fichier n'a donc été modifiée ou supprimée par cette commande, seules les entrées de répertoire des images qui ont disparu.
Vous pouvez exécuter un outil qui parcourt l'espace libre de votre système de fichiers et recherche des éléments qui ressemblent à des jpeg. Heureusement, chaque fichier jpeg commence par un en-tête reconnaissable. Les outils qui recherchent le contenu supprimé sont appelés outils de sculpture . Il y en a quelques-uns dans Ubuntu, notamment recoverjpeg , avant tout , testdisk ,… Si les photos sont sur une partition domestique séparée ou sur un disque externe, installez un ou plusieurs de ces packages et dirigez-les vers la partition avec les images supprimées.
Si les photos sont sur votre disque système, vous devez cesser immédiatement d'utiliser votre système. Utilisez un autre ordinateur pour télécharger un CD live ou USB et démarrer à partir de là. Tous les CD live qui incluent testdisk devraient convenir, mais certains sont plus faciles à utiliser que d'autres. System Rescue CD est un bon CD de secours système à usage général. Ubuntu Rescue Remix peut être plus familier pour un utilisateur d'Ubuntu.
Pour référence future, prenez l'habitude d'utiliser,
mv -i
sauf si vous visez à remplacer les fichiers. Vous avez peut-être déjà un alias pourmv
, mais cela ne se déclenche que lorsque vous tapezmv
directement sur la ligne de commande, pas lorsqu'ilmv
est invoqué par un script ou par lafind
commande.De plus, si vous mettez un
/
après un nom qui est censé être le nom d'un répertoire, vous obtiendrez une erreur si le répertoire n'existe pas, ou s'il existe un fichier de ce nom qui n'est pas un répertoire.Pour éviter les pièges de
find
, vous pouvez utiliser à la place la fonction de traversée de répertoire récursive de bash. Vous devez d'abord l'activer avec la commandeshopt -s globstar
(vous pouvez ajouter cette ligne à votre~/.bashrc
. Ensuite:(Notez que dans bash,
**/
traverse également les liens symboliques vers les répertoires, et il n'y a aucun moyen de désactiver cela. Si vous voulez une traversée récursive qui ne regarde pas les liens symboliques vers les répertoires, utilisez zsh ou find.)la source
/
afterpictures
dans la deuxième série d'exemples? C'est-à-dire, ne devrait-il pas êtremv foo.jpg pictures/
(avec le/
) dans les deuxmv
commandes?J'ai bien peur que vous veniez de perdre toutes vos photos dans ce même fichier. Il est possible de récupérer certains fichiers à l'aide d'outils médico-légaux comme avant tout, mais le taux de réussite diminue plus vous utilisez le support (disque). (pour être précis, plus la partition est longue .)
La prochaine fois, lorsque vous parlerez d'un répertoire, ajoutez-y une barre oblique et ajoutez l'
-i
option de demander une confirmation au cas où un fichier existe déjà:la source