คำสั่งเพื่อย้ายไฟล์ไปที่ถังขยะผ่านทาง Terminal


117

ฉันต้องการทราบว่ามีคำสั่งที่ฉันสามารถออกในเทอร์มินัลหรือไม่ดังนั้นฉันจึงไม่ลบคลาสสิก ( rm) ไฟล์ แต่ให้ย้ายไปที่ถังขยะ (เช่น Nautilus Move to Trash พฤติกรรม)

ในกรณีที่มีคำสั่งดังกล่าวฉันก็จะสนใจที่จะรู้ว่ามันคืออะไร


2
ลองดูคำตอบนี้
Peachy

2
ยังเป็นแหล่งข้อมูลที่ดีที่นี่: webupd8.org/2010/02/make-rm-move-files-to-trash-instead-of.html
Rinzwind

คำตอบ:


105

คุณสามารถใช้gvfs-trashคำสั่งจากแพ็คเกจgvfs-binที่ติดตั้งโดยค่าเริ่มต้นใน Ubuntu

ย้ายไฟล์ไปที่ถังขยะ:

gvfs-trash filename

ดูเนื้อหาของถังขยะ:

gvfs-ls trash://

เอาขยะไปทิ้ง:

gvfs-trash --empty

โปรดเยี่ยมชมgvfs-questionของฉันด้วย
Pandya

นี่คือคำตอบที่ง่ายที่สุดสำหรับฉันที่ได้ผล ขอขอบคุณ.
Teody C. Seguin

10
ตามที่man gvfs-trashมันจะเลิกในความโปรดปรานของดูgio trash man gio
pbhj

67

ติดตั้งtrash-cliติดตั้ง trash-cli -sudo apt-get install trash-cli

วางไฟล์ในถังขยะด้วย: trash file1 file2

รายการไฟล์ในถังขยะ: trash-list

ล้างถังขยะด้วย: trash-empty


1
นั่น (อูบุนตูที่เกี่ยวข้อง) เครื่องมือชี้ไปข้างหน้าเพื่อสเปคถังขยะ
ค่อนข้าง

หลังจากการติดตั้งฉันรันคำสั่งและรับข้อผิดพลาด: File "/usr/bin/trash-list", line 4, in <module> ImportError: No module named 'trashcli'
Daniel

25

ณ วันที่ 2017 gvfs-trashดูเหมือนว่าจะเลิก

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

คุณควรใช้gioโดยเฉพาะ

gio trash

เป็นวิธีที่แนะนำ


2
คุณสามารถลิงค์แหล่งที่มาสำหรับgvfs-trashการคัดค้านgioหรือไม่
Melebius

1
ฉันไม่สามารถให้ลิงค์ที่น่าเสียดาย แต่นี่คือสิ่งที่ฉันพยายามใช้ gvfs-trash บน Kubuntu 17.10: pastebin.com/HA4a1pbs
Eugen Tverdokhleb

1
คุณสามารถวางตัวอย่างที่นี่ในคำตอบของคุณมันจะเพียงพอสำหรับฉันพร้อมกับหมายเลขรุ่นของระบบ ฉันใช้ 16.04 LTS และgvfs-trashเป็นตัวเลือกเดียวที่นี่
Melebius

เครื่องมือนี้มีคุณสมบัติดีๆอีกมากมาย ฉันชอบinfoคำสั่ง; ดูเหมือนว่ามีประโยชน์
Raffi Khatchadourian

4

กำลังอัปเดต@Radu Rădeanuคำตอบ เนื่องจาก Ubuntu บอกให้ฉันใช้gioแทน ...

ดังนั้นเพื่อใช้ถังขยะsome_file(หรือโฟลเดอร์)

gio trash some_file

ที่จะไปใช้ถังขยะดำน้ำ

gio list trash://

เพื่อล้างถังขยะ

gio trash --empty

3

ฉันชอบวิธีที่มีเทคโนโลยีต่ำที่ดีที่สุด ฉันสร้างโฟลเดอร์.Trในโฮมไดเร็กตอรี่ของฉันโดยพิมพ์:

mkdir ~/.Tr

และแทนที่จะใช้rmเพื่อลบไฟล์ฉันจะย้ายไฟล์เหล่านั้นไปยัง~/.Trไดเรกทอรีโดยพิมพ์:

mv fileName ~/.Tr

นี่เป็นวิธีที่ง่ายและมีประสิทธิภาพในการเข้าถึงไฟล์ที่คุณคิดว่าคุณไม่ต้องการด้วยสิทธิประโยชน์เพิ่มเติมในกรณีที่ไม่ยุ่งกับโฟลเดอร์ของระบบเนื่องจากระดับความรู้ของ Ubuntu ของฉันค่อนข้างต่ำและฉันกังวลเกี่ยวกับสิ่งที่อาจเป็น พลาดเมื่อฉันยุ่งกับสิ่งที่ระบบ หากคุณอยู่ในระดับต่ำโปรดทราบว่า "." ในชื่อไดเรกทอรีทำให้มันเป็นไดเรกทอรีที่ซ่อนอยู่


3

คำตอบก่อนหน้านี้กล่าวถึงคำสั่งgio trashซึ่งเป็นเรื่องที่ดีเท่าที่จะไป อย่างไรก็ตามในเครื่องเซิร์ฟเวอร์ไม่มีไดเรกทอรีถังขยะเท่ากับ ฉันเขียนสคริปต์ Bash ที่ทำงานได้; บน (Ubuntu) gio trashเครื่องเดสก์ทอปจะใช้ (ฉันได้เพิ่มลงalias tt='move-to-trash'ในไฟล์นิยาม alias ของฉันแล้วttเป็นตัวช่วยจำสำหรับ "to ถังขยะ")

#!/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

2

นี่คือโอเพ่นซอร์สรุ่นที่อิงกับ nodejs (หากคุณต้องการทราบสิ่งที่เกิดขึ้นภายใต้ประทุนหรือต้องการสิ่งนี้ในโครงการ) ที่มีการสนับสนุนบรรทัดคำสั่ง (ถ้าคุณมีความสุขถ้ามันใช้งานได้

> trash pictures/beach.jpg

0

ใน KDE 4.14.8 ฉันใช้คำสั่งต่อไปนี้เพื่อย้ายไฟล์ไปที่ถังขยะ (ราวกับว่ามันถูกลบในโลมา):

kioclient move path_to_file_or_directory_to_be_removed trash:/

ภาคผนวก: ฉันพบเกี่ยวกับคำสั่งด้วย

    ktrash --help
...
    Note: to move files to the trash, do not use ktrash, but "kioclient move 'url' trash:/"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.