ย้ายไฟล์ไปที่ถังขยะบน Snow Leopard จาก Terminal


13

Snow Leopard อนุญาตให้ผู้ใช้ไฟล์ "นำกลับ" ที่ถูกย้ายไปที่ถังขยะจาก Finder อย่างไรก็ตามเมื่อฉันทำmv <file> ~/.Trashจากบรรทัดคำสั่งฉันไม่ได้รับตัวเลือก "ใส่กลับ"

มีคำสั่งพื้นฐานใน Snow Leopard ที่ย้ายไฟล์ไปที่ถังขยะในขณะที่ให้ฉันยังสามารถ "ถอยกลับ" ได้หรือไม่?

คำตอบ:


2

เมื่อคุณย้ายไฟล์ไปที่ถังขยะ OS X จะอัปเดต.DS_Storeไฟล์ภายใน~/.Trashด้วยข้อมูล "ใส่กลับ" (ดูคำถามนี้สำหรับรายละเอียดเพิ่มเติม )

ในการอัปเดตสิ่งนี้คุณจะต้องอัปเดต.DS_Storeไฟล์เมื่อคุณย้ายไฟล์ไปที่ถังขยะในเทอร์มินัล


ขอบคุณ ไม่ใช่สิ่งที่ฉันหวัง แต่เป็นความจริง
matpie

9

ผมขอแนะนำให้ติดตั้งทับทิมอัญมณีOSX ถังขยะ

อย่างไร?

sudo gem install osx-trash

การใช้งาน?

Usage: trash [OPTIONS] <file> [<file> ...]
       trash [-e | --empty]
       trash [-l | --list]
Specific options:
    -e, --empty                      Empty the trash
    -l, --list                       List items in the trash
    -h, --help                       Show this message
    -v, --version                    Show version

Manipulate to the Finder's trash.

2
ดี! แม้ว่ามันจะสื่อสารกับ Finder แต่การทิ้งไฟล์ด้วย wildcard จะเล่นเสียง trashing สำหรับทุกไฟล์
Jari Keinänen

1
ฉันไม่คิดว่ามันจะยังใช้งานได้ จากเอกสาร: osx-trash ต้องใช้ Mac OS X 10.5, Leopard ฉันพยายามมันและสิ่งที่ฉันได้รับคือbash: trash: command not found
yourfriendzak

ไม่ทำงานบน OS X 10.9 ถามคำถามใหม่เกี่ยวกับวิธีแก้ไขที่นี่superuser.com/questions/694433//
simbo1905

2

ใน MacOSX SDK มีฟังก์ชั่นFSPathMoveObjectToTrashSyncและที่เกี่ยวข้อง มันควรจะง่ายในการเขียนสคริปต์ Python (หรืออะไรก็ตาม) รอบ ๆ มัน

แก้ไข : เพิ่งเขียนมัน สามารถพบได้ที่นี่: rm-trash.py


FYI - FSPathMoveObjectToTrashSync ถูกคัดค้านใน 10.8 และตามเอกสารคุณจะต้องใช้ trashItemAtURL: resultItemURL: error: แทน
เลสเตอร์ Cheung

2

คุณต้องการโปรแกรมrmtrash

คุณสามารถใช้มันเพื่อเพิ่มรายการในถังขยะราวกับว่ามันทำใน Finder

แก้ไข: ฉันเพิ่งลองใช้ rmtrash เพื่อลบและกู้คืน มันทำงานเหมือนกับการลบจากตัวค้นหา ไฟล์ที่แสดงในถังขยะสามารถถูกลากออกและเทได้เหมือนกันหมด ใช้งานตั้งแต่ '06 หรือมากกว่านั้น


จากรหัสของ rmtrash mv file ~/.Trash/ที่ดูเหมือนว่ามันเป็นเพียงเทียบเท่ากับ คุณแน่ใจหรือว่าคุณสามารถกู้คืนไฟล์จากเครื่องมือนี้
อัลเบิร์ต

0

หลังจากดูทางเลือกฉันพบว่า:

  • โปรแกรม rmtrash ย้ายไฟล์ไปยังไดเรกทอรีถังขยะโดยไม่ต้องใช้ระบบ API เพื่อให้ไฟล์ .DS_Store จะไม่ได้รับการปรับปรุง นอกจากนี้จะไม่ทำให้เกิดเสียงรีไซเคิล
  • สคริปต์ไพ ธ อนจะเรียกใช้วิธีการที่เลิกใช้แล้วบน Mountain Lion ซึ่งไม่ได้เรียกเสียงรีไซเคิล
  • สคริปต์ ruby ​​ใช้งานได้ แต่เป็นแบบสโลวู้๊ก (เช่น python)

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

PS: ความซื่อสัตย์ในการดำเนินงานที่ดีที่สุดจะเป็นที่ของ rmtrash ใช้ API อย่างเป็นทางการผมใช้จากนิมซึ่งเป็นธรรมดาวัตถุประสงค์ -c


0

trash-cliตรวจสอบ มันทำงานข้ามแพลตฟอร์มไม่มีเสียงถังขยะและรองรับการใส่กลับ

คุณสามารถติดตั้งได้ด้วย(ต้องใช้Node.js ) :

$ npm install --global trash-cli

อีกทางเลือกหนึ่งถ้าคุณไม่ต้องการใช้ Node.js คุณสามารถติดตั้งไบนารีดั้งเดิมได้osx-trashด้วยตนเอง


-1

ฉันมีปัญหาเดียวกันวันนี้และตรวจสอบโปรแกรม rmtrash ที่ระบุไว้ด้านบนด้วย น่าเสียดายที่โซลูชันทั้งหมดที่เห็นจะย้ายไฟล์ไปที่. trash ของโฮมไดเรกทอรี

ตัวค้นหาในอีกทางหนึ่งจะย้ายไปยังโฟลเดอร์ -Trash ที่แตกต่างกันตามจุดเชื่อมต่อของระบบไฟล์ของไฟล์

ดังนั้นวิธีที่ง่ายที่สุดที่ฉันจะได้รับ (สร้างใน 10.5.8 เพื่อทำการทดสอบในเวอร์ชั่นใหม่กว่าของ OS X) คือ:

osascript -e 'tell application "Finder" to delete POSIX file "'FULL FILENAME HERE'"'

นี่คือเชลล์สคริปต์ที่ฉันสร้างขึ้น:

#!/bin/bash
declare -a files
for f in "$@" ; do
    if [ -r "$f" ] ; then
        case "$f" in
        /*) ;;
        *) f="$( pwd )/$f" ;;
        esac
        files=("${files[@]}" "$f")
    else
        echo "Can't find '$f'" >&2
    fi
done
if [ ${#files[@]} -gt 0 ] ; then
    osascript -e '
    on run argv
        repeat with f in argv
            set x to (POSIX file f) as string
            tell application "Finder" to delete x
        end
    end
    ' "${files[@]}" > /dev/null
fi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.