変更されたすべてのPDFファイルを見つける方法


3

私は6000以上のPDFファイル(章、記事など)のフォルダを持っています。私はダウンロードしたが注釈を付けたことのないものを除草/ソートしようとしています。これを行う方法はありますか?私が注釈を付けたことがないPDFは通常、同じ「作成日」と「変更日」を持っているので、私はそれらの基準を使用できると考えていました)しかし、私はそれを行う方法がわからない。

言い換えれば、私は自分のコンピュータ上で変更されたPDFを見つけることができる必要があります。

助けてくれてありがとう!


あなたが基準を満たす見つけられたPDFファイルをどうしたいですか? Automatorを使用すると、作成後に変更された、Documentsフォルダ内の1,181個のうち108個のPDFファイルが2.5秒で発見されたためです。私はあなたに答えの中であなたにワークフローを伝えることができますが、あなたが情報がどのように欲しいかそして/または見つけられたファイルをどう扱うべきか知っている、それを投稿する前にワークフローを拡張することができます。
user3439894

@ user3439894理想的には、a)修正されたPDFを見つける(つまり、Skimアノテーション付き)、b)それらを埋め込みノートでエクスポートする(これにより、アノテーションがPreview、PDFpenなどで読めるようになる)完全なワークフローがあります。 )元のPDFを削除します。d)新しく変換されたPDFを置き換えたPDFと同じフォルダに保存します。あるいは、Finderが修正されたPDFを表示しているだけであれば、効率的ではありませんが、そこから取り出すことができます。私は既に埋め込まれたメモを使ってエクスポートするドロップレットを持っています…私はただ修正されたファイルを識別する方法が必要です。これが理にかなっていることを願っています。
william

さて、私は夕方に向かっているので私はあなたのコメントで提示されたことをすべてする時間がないので、私は私が持っている情報を投稿するつもりです。明日まで時間がないでしょう(今夜戻ってくる時間によります)。 Automatorで、新しいワークフローを作成し、検索(ドキュメント)>などの設定でファインダーアイテムの検索アクションを追加します。 (すべて)> (種類)(is)(PDF) Run AppleScriptアクションを追加し、デフォルトのコードを次の例のAppleScriptコードに置き換えます。このコードは、最初にターミナルでコマンドとして実行し、個々のコード行に解析する必要があります。
user3439894

printf '\non run {input, parameters}\nset modifiedFilesList to {}\nrepeat with i from 1 to count input\nset fileInfo to info for item i of input\nset cDate to creation date in fileInfo\nset mDate to modification date in fileInfo\nif mDate > cDate then\nset end of modifiedFilesList to item i of input\nend if\nend repeat\nreturn modifiedFilesList\nend run\n\n' コピーしてターミナルからペーストしてAppleScriptアクションを実行します。コーディングしたとおりに、作成後に変更されたファイルのリストがワークフローの次のアクションに渡されることに注意してください。または、サンプルのAppleScriptコードを展開して他のことを実行できます。
user3439894

お手伝いありがとう。まず、すごいですね。しかし、私が注釈を付けたことのないファイルはたくさんありますが、それでもなお、変更された日付は作成された日付よりも数秒遅れているようです(Finderで秒を表示する方法がわかりました)。作成日と作成日が30秒以上異なるファイルのみをリストするようにスクリプトを変更する方法はありますか?助けてくれてありがとう。
william

回答:


3

OPの情報やコメントによれば、これはあなたが求めた通りになります。

オートメーター

  • 新しいを作成します ワークフロー
  • を追加 検索アイテムを探す アクション
    • 設定では、例えば サーチ 書類
    • すべて 以下のうちの
    • 種類 )( です )( PDF
  • を追加 AppleScriptを実行する アクション

    • 交換する デフォルトコード 以下で AppleScript コード さらに下に表示:

    • 注意: もし スキム にはありません /アプリケーション フォルダを変更してから、 skimpdfPathFilename 変数 それに応じて。設定したくなければ、他に何も変更する必要はないはずです。 offsetInSeconds 変数 例えば、 set offsetInSeconds to 60、違う 。この 変数 作成されてから実際に変更されたファイルを見つけるのに役立ちます。粒度差は creation date そして modification date ファイルが最初に作成された時刻は0秒以上です。 これは一貫性がありません ファイルの作成方法によって異なります。ユースケースに合うように調整してください。

ワークフローとは AppleScript コード する:

  • すべて検索 PDF のファイル ターゲット すべてのサブフォルダを含むフォルダ
    • これは 検索アイテムを探す アクション そしてその出力は
      AppleScriptを実行する アクション
  • すべてのリストを作成します PDF その後に変更されたファイル creation date、あたり offsetInSeconds 変数
    • これは最初に行われます repeat ループ 。基準を満たすファイルは modifiedFilesList 次回使用予定 repeat ループ
  • 持っているすべてのファイルのリストを作成します 注釈 で作られた スキム
    • これは xattr 得るために 拡張属性 ターゲットファイルファイルにターゲットがある場合 拡張属性 ある に設定されています true そうでなければ、に設定 false。フラグが立てられたファイル true に入る annotatedSkimFilesList 次回使用予定 repeat ループ
  • その場に埋め込む 注釈 内のファイルに対して行われた スキム
    • を使う skimpdf 実用性 スキム のファイルに annotatedSkimFilesList 注釈 定位置に埋め込まれています。したがって、別のファイルにエクスポートしてから元のファイルを削除して置き換える必要はありません。

注意: 私はこれをテストしました、そしてそれは私のために問題なく動作しますが、それでもあなたが正しいバックアップを持っていると確信するまでこれを実行しないでください!また、実際の検索フォルダの外側に配置されたコピー済みファイルの小さなサンプリングでワークフローをテストする必要があります。テストが完了した後にワークフローが実行されます。


AppleScript コード

on run {input, parameters}

    set skimpdfPathFilename to "'/Applications/Skim.app/Contents/SharedSupport/skimpdf'"

    set offsetInSeconds to 60       
    set modifiedFilesList to {}
    set annotatedSkimFilesList to {}

    repeat with i from 1 to count input
        set fileInfo to info for item i of input
        set cDate to creation date in fileInfo
        set mDate to modification date in fileInfo
        if mDate > (cDate + offsetInSeconds) then
            set end of modifiedFilesList to POSIX path of item i of input
        end if
    end repeat

    repeat with i from 1 to count modifiedFilesList
        set withNotes to (do shell script "xattr " & quoted form of item i in modifiedFilesList ¬
            & " | [ $(grep -c \".*_notes$\") -ge 1 ] && printf 'true' || printf 'false'") as boolean
        if withNotes then
            set end of annotatedSkimFilesList to item i in modifiedFilesList
        end if
    end repeat

    repeat with i from 1 to count annotatedSkimFilesList
        do shell script skimpdfPathFilename & space & "embed" & space & ¬
            quoted form of item i in annotatedSkimFilesList
    end repeat

end run

を理解する do shell script コマンド 第二に repeat ループ

あるとき PDF です 注釈付き スキム そして保存しました、 拡張属性 ファイルに設定されています。

$ xattr Filename.pdf 
com.apple.FinderInfo
net_sourceforge_skim-app_notes
net_sourceforge_skim-app_rtf_notes
net_sourceforge_skim-app_text_notes
$ 

出力 配管されている | に:

[ $(grep -c \".*_notes$\") -ge 1 ] && printf 'true' || printf 'false'

どのテスト 出力 grep の出現回数を数える パターン で、もし grep の1つ以上の出現を見つけます パターン 、 そうして withNotes 変数 に設定されています trueに設定されている間 false さもないと。

ご了承ください スキム 組み込みのコマンドラインユーティリティがありますか。 /Applications/Skim.app/Contents/SharedSupport/skimnotes それをテストするために使用することができます PDF 持っている 注釈 で作られた スキム しかし、そのために 出力 このユーティリティは、 シェルスクリプト 駆け込む ターミナル それから do shell script コマンド そしてなぜ私が使ったのか xattr そして grep 代わりに。


注意: AppleScript コード 上記はそれだけで、何も含まれていません エラー処理 適切/必要/望まれるかもしれないので、責任はユーザーに適切なものを追加することにあります。 エラー処理 誰にでも コード例 提示または コード 自分で書いた。


私はSkimを使用していませんが、私はPDFを修正しました。 2秒の差では足りないことがわかりました。しかし、すぐに実験で最良のものが見つかります。保存されたワークフローに(Skimなしで)あなたの解決策を保っています - ありがとう。
Gilby

@ギルビー、私が最初に私の答えを投稿し、私が使用したのは遅くなった + 2 いくつかの理由だけで 追加しなければならず、私はそれをメモしました、しかし今朝の再読の後に、私は修正しました コード OPへのコメントで提案されたあなたの60秒を使うため。私はそれを別の変数として設定しました。それを変更するためにコードの奥深くに行かなくてもいいようにします。コメントありがとうございます。
user3439894

これは素晴らしいです。特定のPDFファイルタイプに関連している可能性があるエラーアラートを受け取りました。たとえば、特に1つのPDFが読み取り専用またはその他の方法でロックされています(つまり、注釈を付けることはできますが印刷することはできません)。このPDFが含まれているフォルダでスクリプトを実行したときに、もう一度エラーが発生しました。それにもかかわらず、私が数十ダースの他の(通常の)PDFのスポットチェックをするとき、それらはすべて埋め込まれたメモで保存されました。素晴らしいもの。ありがとうございました!
william

1

前書き
あなたの質問とその下にあるあなたのフォローアップのコメントに基づいて、私はその解決策が私が提案しているものと同じくらい単純でありえると思います。 @ user3439894のよく書かれたコメントに加えて、私はあなたにあなたの仕事を達成するための素晴らしい選択肢がいくつかあると信じています。

セットアップ

  1. で場所を開く Finder 上部の表示オプションに移動します。それはこのように見えます: enter image description here

  2. 今、一番上の配置オプション/バーにナビゲートし、それらをクリックしてください、そしてあなたは以下を見るべきです。必ず両方をチェックしてください Date Modified そして Date Created あなたがソートしたい他のオプションと一緒に。 enter image description here

  3. 次に、リストを並べ替えます Date Modified私の場合、ファイルを連続した命名順で次々に作成しました。ファイルを変更しました 17.pdf そしてそれを保存しました。ご覧のとおり、リストの一番上にジャンプしました。決定順に見たとき。 enter image description here

実装
すべてのファイルはそれらのファイルごとにグループ化されているので Date Modified、あなたはそれらをあなたの小滴の中に個々の塊としてドラッグすることができます(それがあなたが言うように実際には完全に機能すると仮定して)。
これはあなたのフォローアップコメントの後半をカバーするでしょうが、@ user3439894は前半にあなたが本質的に探しているものをあなたに与えました。
私は、あなたがどのようにして進んだかについてあなたと一緒にフォローすることに興味があるでしょう。


視覚的な方法を使用することをお勧めします。これは、複数のフォルダにある非常に多くのPDFを扱っていなかった場合にはもっと便利です。それでも、Finderでは、一度に1つの基準で並べ替えることしかできません。したがって、「更新日」でソートしてファイルをスクロールダウンしても、まだ混乱しています(つまり、変更されたファイルがすべて上/下にあるわけではありません)。ありがとうございました。
william

0

おそらく最も簡単な方法は、Finderでスマートフォルダを作成することです。このスマートフォルダには、検索条件によって定義されたすべてのファイルが含まれています。そこから、好きな方法でファイルをソートするのはとても簡単です。

Finderで、メニュー項目[ファイル] - [新規スマートフォルダ]を選択します。

enter image description here

コンピュータ全体でPDFファイルを検索したい場合は、サイドバーで「Macintosh HD」を選択してください。検索フィールドに….pdfと入力してください。

enter image description here

その画像の右側には、保存ボタンの下に+ボタンがあります。そのボタンをクリックすると、さらに検索条件を入力できます。あなたが選ぶことができるたくさんのオプションがあります。 「ファイル拡張子」を選択し、値に.pdfを追加しました

enter image description here

Finderで、メニュー項目View / Show View Optionsに移動します。

enter image description here

両方の利用可能なフィールドに "更新日"が設定されていることを確認してください。

enter image description here

新しいスマートフォルダと書かれているタブの下にある[保存]ボタンをクリックします

enter image description here

これで、あなたはあなたのFinderサイドバーにあなたの全てのPDFを含む新しいスマートフォルダを持つことになります。

enter image description here


1
これは便利な保存済み検索を作成する方法の素晴らしいデモですが、@ williamの質問に答えることはできないと思います。スポットライトで日付を比較する方法はありません(私の知る限り)。
Gilby
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.