2016-04-11 3 views
-1

Gibt es sowas wie rm -f aber auto n nicht automatisch y? Um zu löschen, was gelöscht werden kann, wird rm nicht gefragt und verhindert, dass andere gelöscht werden. Wie Dateien mit schreibgeschütztem Flag, Dateien, die von einem anderen Programm geöffnet wurden. Ich versuchte yes n | rm somefile nicht funktioniert.Wie lösche ich automatisch das Löschen, während rm nach Bestätigung fragt?

Es ist OS X 10.11. rm fördert auf schreibgeschützten Dateien.

Scheint rm hat unterschiedliche Standardverhalten auf anderen Plattform.

Antworten Ich habe versucht, auf OS X 10.11 und Ubuntu 14.04 (nicht):

rm somefile 
rm --interactive=never somefile 
echo n| rm -i somefile 

Ubuntu log:

$ touch somefile 
$ chmod 444 somefile 
$ ls -l somefile 
-r--r--r-- 1 ubuntu ubuntu 0 Apr 12 06:04 somefile 
$ 
$ rm somefile 
rm: remove write-protected regular empty file ‘somefile’? n 
$ rm somefile 
rm: remove write-protected regular empty file ‘somefile’? n 
$ 
$ rm --interactive=never somefile 
$ rm --interactive=never somefile 
rm: cannot remove ‘somefile’: No such file or directory 
$ 
$ touch somefile             
$ chmod 444 somefile             
$ ls -l somefile            
-r--r--r-- 1 ubuntu ubuntu 0 Apr 12 06:06 somefile 
$ echo n| rm -i somefile 
rm: remove write-protected regular empty file ‘somefile’? $ ls -l somefile 
-r--r--r-- 1 ubuntu ubuntu 0 Apr 12 06:06 somefile 

@ SaintHax Lösung

for file in [email protected]; do 
    [ -w $file ] && rm $file 
done 

Arbeiten mit schreibgeschützte Dateien auf den oben genannten Plattformen.

+1

Was angenommen hat, das zu tun? Nichts? – pfnuesel

+0

@pfnuesel Nein, es ist nicht nichts. rm frage nichts und lösche nur eine Datei in der meisten Zeit. Lassen Sie es in der meisten Zeit löschen, aber antwortet nicht, während es gefragt wird. Eine Datei mit schreibgeschütztem Flag, eine Datei, die von einem anderen Programm geöffnet wurde. – Al3n

Antwort

1

Das funktioniert gut für mich auf meinen zwei Arten von Linux.

echo n| rm -i *.csv 

Allerdings ist -i immer interaktiv, also negiert es im Grunde den Befehl. Wenn Sie alles mit dem readonly-Befehl überspringen möchten, würde ich vorschlagen, eine Funktion zu erstellen.

del() { 
    for file in [email protected]; do 
     [ -w $file ] && rm $file 
    done 
} 

Beachten Sie, dass dies nur funktioniert, wenn die Dateien von Ihnen nicht beschreibbar sind.

+0

Funktioniert nicht mit 444 Dateien unter OS X 10.11. Aufforderung 'entfernen Sie eine Datei?' – Al3n

+0

'echo n | rm -i somefile funktioniert auf Ubuntu nicht wie erwartet 14.04. Um Bestätigung gebeten. – Al3n

+0

@ Al3n Ich habe keinen Zugriff auf OS X, aber ich habe die Antwort bearbeitet.Ich glaube, das macht was du willst. – SaintHax

1

Sie --interactive oder -i als Option im rm Befehl verwendet werden können, wie in den man-Seiten angegeben:

-i Eingabeaufforderung vor jeder Entnahme

--interactive [= WANN] prompt nach WANN: niemals, einmal (-I) oder immer (-i); ohne WHEN, prompt immer

+0

Danke, es gibt keine solchen Anweisungen auf OS X rm Mann. Ich habe versucht, 'rm --interactive = nie somefile' und bekam eine' a.txt rm: illegale Option - '. Die Mac-Version man rm'-i Bitte bestätigen Sie vor dem Versuch, jede Datei zu entfernen, unabhängig von den Dateiberechtigungen, oder ob das Standard-Eingabegerät ein Terminal ist. Die Option -i überschreibt alle vorherigen Optionen -f.' Ich werde dies auf Ubuntu versuchen. – Al3n

+0

'rm --interactive = nie somefile' funktioniert nicht auf Ubuntu 14.04. Würde mod 444 Datei löschen. – Al3n

0

könnten Sie verwenden:

rm --interactive=never somefile 
+1

Das ist das gleiche wie 'rm somefile'. – pfnuesel

+0

Es sei denn du hast einen Alias ​​(wie ich) 'alias rm = 'rm -i'' – Till