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


117

Je voudrais savoir s'il y a une commande que je peux émettre dans un terminal afin que je ne supprime pas classiquement ( rm) le fichier, mais le mette plutôt dans la corbeille (c'est-à-dire le comportement Nautilus Move to Trash).

Au cas où il y aurait une telle commande, j'aimerais aussi savoir ce que c'est.


2
Regardez cette réponse .
Peachy

Réponses:


105

Vous pouvez utiliser la gvfs-trashcommande du paquetage gvfs-bininstallé 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 poubelle:

gvfs-trash --empty

Visitez également mon gvfs-question .
Pandya

C'est la réponse la plus simple pour moi qui fonctionne. Je vous remercie.
Teody C. Seguin

10
Selon man gvfs-trashil est déconseillé en faveur de gio trash, voir man gio.
pbhj

67

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

Mettez les fichiers à la poubelle avec: trash file1 file2

Liste des fichiers dans la corbeille: trash-list

Vider la corbeille avec: trash-empty


1
Cet outil (lié à Ubuntu) pointe vers une spécification de corbeille . Très intéressant, je ne sais pas à quel point il a été adopté par beaucoup ...
Frank Nocke

Après l'installation, j'exécute la commande et reçois le message d'erreur suivant: File "/usr/bin/trash-list", line 4, in <module> ImportError: No module named 'trashcli'
Daniel

25

À partir de 2017, gvfs-trashsemble ê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 devriez utiliser gio, en particulier

gio trash

est la manière recommandée.


2
Pourriez-vous lier une source pour gvfs-trashêtre obsolète et quelle gioest?
Melebius

1
Je ne peux malheureusement pas fournir de lien, mais c'est ce que j'ai essayé d'utiliser gvfs-trash sur Kubuntu 17.10: pastebin.com/HA4a1pbs
Eugen Tverdokhleb

1
Vous pouvez coller l’exemple ici dans votre réponse, cela me suffirait avec le numéro de version du système. J'utilise 16.04 LTS et gvfs-trashest la seule option ici.
Melebius

Cet outil a un tas d'autres fonctionnalités intéressantes. J'aime la infocommande; cela semble utile.
Raffi Khatchadourian

4

Mise @Radu Rădeanuà jour de la réponse. Depuis Ubuntu me dit d'utiliser à la gioplace ...

Donc, pour jeter some_file(ou dossier) utiliser

gio trash some_file

Pour aller plonger dans une benne à ordures

gio list trash://

Vider la corbeille

gio trash --empty

3

J'aime les moyens low tech le meilleur. J'ai créé un dossier .Trdans mon répertoire personnel en tapant:

mkdir ~/.Tr

et au lieu d'utiliser rmpour supprimer des fichiers, je déplace ces fichiers dans le ~/.Trrépertoire en tapant:

mv fileName ~/.Tr

C’est un moyen simple et efficace de conserver l’accès aux fichiers dont vous pensez que vous ne voulez pas, mais qui présente également l’avantage supplémentaire de ne pas déranger les dossiers du système, car mes connaissances en Ubuntu sont relativement faibles et je me soucie de ce que je pourrais être. bousiller quand je déconner avec des trucs du système. Si vous êtes également de faible niveau, veuillez noter que le "." dans le nom du répertoire en fait un répertoire caché.


3

Une réponse précédente mentionne la commande gio trash, ce qui ne pose pas de problème. Cependant, sur les ordinateurs du serveur, il n’existe pas d’équivalent d’un répertoire 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; ttest un mnémonique pour "mettre à la corbeille".)

#!/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 "$@" ; 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


0

Dans KDE 4.14.8, j’utilisais la commande suivante pour déplacer les fichiers dans la corbeille (comme si elle avait été supprimée dans Dolphin):

kioclient move path_to_file_or_directory_to_be_removed trash:/

Annexe: j'ai trouvé à propos de la commande avec

    ktrash --help
...
    Note: to move files to the trash, do not use ktrash, but "kioclient move 'url' trash:/"
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.