Commande pour déplacer un fichier dans la corbeille via le terminal

102

J'aimerais savoir si je peux émettre une commande dans un terminal pour ne pas supprimer classiquement ( rm ) le fichier, mais le déplacer vers la corbeille (comportement Nautilus Move to Trash).

Au cas où il y aurait une telle commande, je serais également intéressé à savoir ce que c'est.

    
posée Rasmus 06.11.2012 - 09:46
la source

6 réponses

92

Vous pouvez utiliser la commande gvfs-trash à partir du package gvfs-bin installé par défaut dans Ubuntu.

Déplacer le fichier dans la corbeille:

gvfs-trash filename

Voir le contenu de la corbeille:

gvfs-ls trash://

Vider la corbeille:

gvfs-trash --empty
    
réponse donnée Radu Rădeanu 17.09.2014 - 08:21
la source
60

Installez trash-cli - sudo apt-get install trash-cli

Placez les fichiers dans la corbeille avec: trash file1 file2

Afficher les fichiers dans la corbeille: trash-list

Vider la corbeille avec: trash-empty

    
réponse donnée user55822 06.11.2012 - 10:12
la source
11

À partir de 2017, gvfs-trash semble être obsolète.

$ touch test
$ gvfs-trash test
This tool has been deprecated, use 'gio trash' instead.
See 'gio help trash' for more info.

Vous devez utiliser gio , spécifiquement

gio trash

est la méthode recommandée.

    
réponse donnée Eugen Tverdokhleb 29.10.2017 - 11:49
la source
2

J'aime les moyens les moins technologiques. J'ai créé un dossier .Tr dans mon répertoire personnel en tapant:

mkdir ~/.Tr

et au lieu d'utiliser rm pour supprimer des fichiers, je déplace ces fichiers dans le répertoire ~/.Tr en tapant:

mv fileName ~/.Tr

Ceci est un moyen efficace et simple de garder l’accès aux fichiers dont vous pensez ne pas vouloir avec l’avantage supplémentaire de ne pas perturber les dossiers du système, car mes niveaux de connaissance Ubuntu sont assez bas et je crains pour Je vais peut-être foirer quand je gâche avec des trucs du système. Si vous êtes également de bas niveau, veuillez noter que le "." dans le nom du répertoire en fait un répertoire caché.

    
réponse donnée user2981989 25.09.2015 - 19:29
la source
1

Voici une version basée sur nodejs open source (si vous voulez savoir ce qui se passe sous le capot ou si vous en avez besoin dans un projet), qui a également un support en ligne de commande (si cela vous convient, si cela ne marche pas.

> trash pictures/beach.jpg
    
réponse donnée Frank Nocke 15.08.2017 - 19:44
la source
1

Une réponse précédente mentionne la commande gio trash , ce qui est correct dans la mesure où elle va. Cependant, sur les machines serveur, il n'y a pas d'équivalent d'un répertoire de corbeille. J'ai écrit un script Bash qui fait le travail; sur les ordinateurs de bureau (Ubuntu), il utilise gio trash . (J'ai ajouté alias tt='move-to-trash' à mon fichier de définitions d'alias; tt est un mnémonique pour "to trash".)

#!/bin/bash
# move-to-trash

# Teemu Leisti 2018-07-08

# This script moves the files given as arguments to the trash directory, if they
# are not already there. It works both on (Ubuntu) desktop and server hosts.
#
# The script is intended as a command-line equivalent of deleting a file from a
# graphical file manager, which, in the usual case, moves the deleted file(s) to
# a built-in trash directory. On server hosts, the analogy is not perfect, as
# the script does not offer the functionalities of restoring a trashed file to
# its original location nor of emptying the trash directory; rather, it is an
# alternative to the 'rm' command that offers the user the peace of mind that
# they can still undo an unintended deletion before they empty the trash
# directory.
#
# To determine whether it's running on a desktop host, the script tests for the
# existence of directory ~/.local/share/Trash. In case it is, the script relies
# on the 'gio trash' command.
#
# When not running on a desktop host, there is no built-in trash directory, so
# the first invocation of the script creates one: ~/.Trash/. It will not
# overwrite an existing file in that directory; instead, in case a file given as
# an argument already exists in the custom trash directory, the script first
# appends a timestamp to the filename, with millisecond resolution, such that no
# existing file will be overwritten.
#
# The script will not choke on a nonexistent file. It outputs the final
# disposition of each argument: does not exist, was already in trash, or was
# moved to the trash.


# Exit on using an uninitialized variable, and on a command returning an error.
# (The latter setting necessitates appending " || true" to those arithmetic
# calculations that can result in a value of 0, lest bash interpret the result
# as signalling an error.)
set -eu

is_desktop=0

if [[ -d ~/.local/share/Trash ]] ; then
    is_desktop=1
    trash_dir_abspath=$(realpath ~/.local/share/Trash)
else
    trash_dir_abspath=$(realpath ~/.Trash)
    if [[ -e $trash_dir_abspath ]] ; then
        if [[ ! -d $trash_dir_abspath ]] ; then
            echo "The file $trash_dir_abspath exists, but is not a directory. Exiting."
            exit 1
        fi
    else
        mkdir $trash_dir_abspath
        echo "Created directory $trash_dir_abspath"
    fi
fi

for file in "[email protected]" ; do
    file_abspath=$(realpath -- "$file")
    file_basename=$( basename -- "$file_abspath" )
    if [[ ! -e $file_abspath ]] ; then
        echo "does not exist:   $file_abspath"
    elif [[ "$file_abspath" == "$trash_dir_abspath"* ]] ; then
        echo "already in trash: $file_abspath"
    else
        if (( is_desktop == 1 )) ; then
            gio trash "$file_abspath" || true
        else
            move_to_abspath="$trash_dir_abspath/$file_basename"
            while [[ -e "$move_to_abspath" ]] ; do
                move_to_abspath="$trash_dir_abspath/$file_basename-"$(date '+%Y-%m-%d-at-%H:%M:%S.%3N')
            done
            # While we're reasonably sure that the file at $move_to_abspath does not exist, we shall
            # use the '-f' (force) flag in the 'mv' command anyway, to be sure that moving the file
            # to the trash directory is successful even in the extremely unlikely case that due to a
            # run condition, some other thread has created the file $move_to_abspath after the
            # execution of the while test above.
            /bin/mv -f "$file_abspath" "$move_to_abspath"
        fi
        echo "moved to trash:   $file_abspath"
    fi
done
    
réponse donnée Teemu Leisti 26.06.2018 - 15:05
la source

Lire d'autres questions sur les étiquettes