Je veux déplacer un fichier avec Ruby. Comment faire ?
J'ai oublié d'ajouter qu'il n'est pas possible de se déplacer d'une partition à l'autre. Merci de votre compréhension.
Vous pouvez utiliser FileUtils pour ce faire.
#!/usr/bin/env ruby
require 'fileutils'
FileUtils.mv('/tmp/your_file', '/opt/new/location/your_file')
N'oubliez pas que si vous vous déplacez d'une partition à l'autre, "mv" copiera le fichier vers la nouvelle destination et dissociera le chemin d'accès à la source.
J'ai oublié d'ajouter qu'il n'est pas possible de se déplacer d'une partition à l'autre. Merci de votre compréhension.
En fait, mv fait la copie pour vous. "Déplace le(s) fichier(s) src vers dest. Si le fichier et la destination existent sur une partition différente, le fichier est copié à la place." ... ruby-doc.org/core/classes/FileUtils.html#M004330
Le renommage de fichiers ne fonctionne pas entre les partitions et génère l'erreur "Invalid cross-device link". FileUtils est un meilleur choix dans ce cas, mais pour un simple déplacement dans la même partition, renommer fonctionne.
@d3vkit, merci pour la remarque mais sous Windows cela fonctionne sur tous les lecteurs, locaux et distants, par exemple <code>File.rename 'c:/test/test.txt', 'e:/test.txt'</code>, quel système d'exploitation utilisez-vous ?
Ah, j'ai eu des problèmes spécifiques dans Ubuntu en utilisant des partages en réseau Windows. J'ai également eu des problèmes avec FileUtils.mv, qui déplaçait le fichier et disait ensuite qu'il n'avait pas la permission de supprimer l'ancien fichier. J'ai fini par utiliser FileUtils.cp puis File.delete pour me débarrasser de l'ancien fichier.
+1 Notez que .move est un alias de .mv, vous devriez donc pouvoir faire FileUtils.mv également.
Utilisez le module 'fileutils' et utilisez FileUtils.mv :
http://www.ruby-doc.org/stdlib-2.0/libdoc/fileutils/rdoc/FileUtils.html#method-c-mv
Voici un modèle .
src_dir = "/full_path/to_some/ex_file.txt"
dst_dir = "/full_path/target_dir"
#Use the method below to do the moving
move_src_to_target_dir(src_dir, dst_dir)
def archive_src_to_dst_dir(src_dir, dst_dir)
if File.exist ? (src_dir)
puts "about to move this file: #{src_dir}"
FileUtils.mv(src_dir, dst_dir)
else
puts "can not find source file to move"
end
end
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.