Verifica dell'esistenza di file nascosti in AppleScript


4

Posso verificare se esiste un file usando AppleScript. Ma ho problemi con i file nascosti. C'è un modo speciale per farlo?

set home_path to (path to home folder as text)
set hiddenFile to home_path & ".test"

tell application "Finder"
    if not (exists file hiddenFile) then
        display dialog ".test does not exist."
    end if
end tell

A meno che tu non abbia un bisogno assoluto di due variabili home_pathe hiddenFile, potresti semplicemente usarlo set hiddenFile to (path to home folder as text) & ".test"e usarlo con la risposta di klanomath, dato che è di gran lunga la migliore risposta di tutte finora! IMO Dovrebbe essere contrassegnato come risposta accettata.
user3439894,

Risposte:


7

Sostituisci Finder con Eventi di sistema:

set home_path to (path to home folder as text)
set hiddenFile to home_path & ".test"

tell application "System Events"
    if exists file hiddenFile then
        display dialog ".test does exist."
    else
        display dialog ".test does not exist."
    end if
end tell

e funziona.


4

È anche possibile incorporare la chiamata del comando shell all'interno di AppleScript senza la necessità di creare script bash separati. Ecco un esempio:

set home_path to (path to home folder as text)
set fileName to ".viminfo"
set hiddenFile to home_path & fileName

tell application "Finder"
    if not (exists file hiddenFile) then
        try
            set output to do shell script "[ -f " & quoted form of POSIX path of hiddenFile & " ];"
        on error
            display dialog fileName & " does not exist."
        end try
        display dialog fileName & " does exist."
    end if
end tell

Questo AppleScript utilizza bash [ -f $PATH ];per verificare l'esistenza del file. Inoltre try, poiché è necessario "rilevare" un errore: se il file non esiste, viene visualizzato un errore e lo script viene arrestato.


2

Quindi non so come fare con AppleScript nativo, ma poiché i Mac usano Bash, puoi fare uno script di shell per fare la ricerca. Non è l'ideale ma è meglio di niente.

Quindi il tuo script shell sta per cdcambiare directory, nella cartella che devi cercare. Quindi eseguirà il lscomando, che elenca il contenuto di una directory. la -abandiera su gli lsdice di elencare gli oggetti nascosti. Gli strumenti di Bash usano un concetto chiamato input / output standard per ottenere input e visualizzare output. L'output standard viene visualizzato sullo schermo per impostazione predefinita, ma può essere reindirizzato da uno strumento chiamato pipe per andare altrove. In questo caso, invece di visualizzare un elenco di tutti i file in una directory, eseguiremo il pipe di tale elenco in uno strumento di ricerca chiamato grep. Questa spiegazione era in qualche modo dettagliata, ma il tuo script di shell necessita solo di 3 righe (la prima delle quali è probabilmente superflua in questo caso):

#!/bin/bash                                   # define the shell, not really needed because bash is the default shell but good practice
cd /path/to/search/directory                  # cd to the proper place
ls -a | grep "the text you're looking for"    # list all files (including hidden ones) and pipe output into grep, a search tool

Salvalo come qualcosa di logico, come findFile.sh, quindi rendilo eseguibile con questo comando nell'app del terminale

chmod +x /path/to/findFile.sh

Quindi ora è pronto per andare su AppleScript.

Come ho detto, non sono così esperto in AppleScript, ma a quanto ho capito avresti eseguito lo script della shell in questo modo

set output to do shell script "/path/to/findFile.sh"

quindi la outputvariabile conterrebbe qualsiasi testo trovato da grep. Il tuo test per verificare se il file esiste o meno ora outputcontiene o meno testo.

Sentiti libero di correre man grepnel terminale per il grepmanuale per vedere di più su come funziona e cosa corrisponde e su come abbinare i file solo con determinate estensioni e cose del genere. Forse potresti voler giocare a tubazioni grepper avere un'idea di come funziona.

Spero che qualcuno possa trovare una risposta alla tua domanda in AppleScript.

Riferimenti:

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.