ターミナルからSnow Leopardのファイルをゴミ箱に移動する


13

Snow Leopardでは、ユーザーはFinderからゴミ箱に移動したファイルを「戻す」ことができます。ただし、mv <file> ~/.Trashコマンドラインから実行すると、[Put Back]オプションが表示されません。

Snow Leopardには、ファイルをごみ箱に移動する一方で、「Put Back」を実行できるネイティブコマンドがありますか?

回答:


2

ファイルをゴミ箱に移動すると、OS X は「Put back」情報で.DS_Storeファイルを更新します~/.Trash。(詳細については、この質問を参照してください

これを更新.DS_Storeするには、ターミナルのゴミ箱にファイルを移動するときにファイルも更新する必要があります。


ありがとう。私が望んでいたものではありませんが、それは真実です。
マッピー

9

Ruby gem osx-trashをインストールすることをお勧めします

どうやって?

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と通信するときに、ワイルドカードを使用してファイルを破棄すると、すべてのファイルの破棄音が再生されます。
ヤリケイネン

1
これはまだ機能するとは思わない。ドキュメントから:osx-trashにはMac OS X 10.5、Leopardが必要です。私はそれを試しました、そして、私が得るすべてはbash: trash: command not found
-yourfriendzak

OS X 10.9上のdoesntの仕事は、ここでそれを修正する方法についての新鮮な質問尋ねsuperuser.com/questions/694433/...
simbo1905を

2

MacOSX SDKには、機能FSPathMoveObjectToTrashSyncと関連があります。Python(またはその他の)スクリプトを簡単に記述できるはずです。

編集:コーディングしただけです。ここで見つけることができます:rm-trash.py


参考までに、FSPathMoveObjectToTrashSyncは10.8で廃止され、ドキュメントによると、代わりにtrashItemAtURL:resultingItemURL:error:を使用する必要があります。
レスター・チャン

2

rmtrashプログラムが必要です。

これを使用して、ファインダーで行われたかのようにアイテムをゴミ箱に追加できます。

編集:rmtrashを使用して削除と回復を試みました。ファインダーから削除するのとまったく同じように機能します。ファイルはゴミ箱に表示され、まったく同じようにドラッグして空にできます。06年頃から使用しています。


rmtrashのコードから見ると、それはに相当するように見えmv file ~/.Trash/ます。このツールからファイルを回復できることを確認しますか?
アルバート

0

代替案を見て、次のことがわかりました。

  • rmtrashプログラムは、システムAPIを使用せずにファイルをゴミ箱ディレクトリに移動するため、.DS_Storeファイルは更新されません。また、リサイクルサウンドをトリガーしません。
  • Pythonスクリプトは、マウンテンライオンで非推奨のメソッドを呼び出しますが、このメソッドもリサイクルサウンドをトリガーしません。
  • rubyスクリプトは動作しますが、sloooooowです(pythonのように)。

そこで、Nimrodプログラミング言語で実装された独自のtrashコマンドを作成しました。そのため、バックグラウンドプロセスでゴミ箱の音がトリガーされます。つまり、コマンドを入力して実行すると、サウンドの再生を待つ必要がないため、すぐに終了します。短所は、nimrodをコンパイルしてからこのプログラムをコンパイルする必要があるということです(バイナリーは申し訳ありません!)。

PS:正直なところ、最良の実装は、私がNimrodから使用している公式のAPIを使用したrmtrashの実装です。これは単純なObjective-Cです。


0

チェックしてくださいtrash-cli。クロスプラットフォームで動作し、ゴミの音はありません。PutBackをサポートしています。

Node.jsが必要です)でインストールできます:

$ npm install --global trash-cli

あるいは、Node.jsを使用したくない場合は、ネイティブバイナリをosx-trash手動でインストールできます。


-1

今日も同じ問題が発生し、上記のrmtrashプログラムもチェックしました。残念ながら、これまでに見られたすべてのソリューションは、ファイルをホームディレクトリの.Trashに移動します。

一方、Finderはファイルのファイルシステムのマウントポイントに基づいて、異なる-Trashフォルダーに移動します。

したがって、私が思いつく最も簡単な解決策(10.5.8で作成。OSXの新しいバージョンでテストする)は次のとおりです。

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.