Best Practice Doppelte und einfach Anführungsstriche in Runtime.getruntime().exec()

N

noobee

Aktives Mitglied
Hallo community,

ich möchte über die Linux Konsole meine Dateien auslesen und mir das größte File zurück geben lassen. Wenn ich händisch alles in die Konsole eingebe, funktioniert das super. Lass ich das mit Netbeans über ...exec() ausführen, gehts natürlich nicht. Der Fehler liegt mit großer Wahrscheinlichkeit am richtigen Setzen der Quotes.

Händisch in der Konsole: "find /home/Downloads/dir_3 -printf '%s %p\n'| sort -rn | head -1" läufts:
84642841 /home/Downloads/dir_3/distributor_marvel_studios_2016-DWEU.mkv

Meine Versuche:
Java:
Process p2 = Runtime.getRuntime().exec("find /home/Downloads/dir_3/ -printf '%s %p\n' | sort -rn | head -1");
Java:
Process p2 = Runtime.getRuntime().exec(new String[] {"find", "/home/Downloads/dir_3/", "-printf %s %p\n", "| sort -rn | head -1"} );
Java:
Process p2 = Runtime.getRuntime().exec(new String[] {"find", "/home/Downloads/dir_3/", "-printf '%s %p\n'", "| sort -rn | head -1"} );

Alle 3 gehen leider nicht. Kann mir jemand die Quotes setzen? Und weiß jemand zufällig, wie ich statt Dateigröße und Name NUR noch den Name angezeigt bekomme, wenn es dann mal geht?
 
Flown

Flown

Administrator
Mitarbeiter
Mal abgesehen davon, dass man hier keinen Prozess braucht und man das mit der Java API auch hinbekommt, schätze ich mal, dass es an \n liegt und es mit \\n escaped werden muss.
 
F

fhoffmann

Top Contributor
Wenn du über exec() einen Befehl ausführst, hast du keine bash. Die Pipe-Zeichen werden aber von der bash interprtiert.
 
mihe7

mihe7

Top Contributor
Java:
import java.io.*;

public class Bash {
    public static void main(String[] args) throws Exception {
        Process p = Runtime.getRuntime().exec(new String[]{"bash", "-c", 
                "find . -name '*.java' | grep 'Bash'"});
        try(BufferedReader is = new BufferedReader(new InputStreamReader(p.getInputStream()))) {
            String line;
            while ((line = is.readLine()) != null) {
                System.out.println(line);  
            }
        }
        System.out.println("Exited with " + p.waitFor());
    }
}
 
mihe7

mihe7

Top Contributor
Noch viel wunderbarerer ;) geht es plattformunabhängig:

Java:
import java.io.IOException;
import java.nio.file.*;
import java.nio.file.attribute.*;

public class LargestFile extends SimpleFileVisitor<Path> {

    private Path largest;
    private long size;

    @Override
    public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
            throws IOException {
        if (Files.isRegularFile(file, LinkOption.NOFOLLOW_LINKS)) {
            long fileSize = Files.size(file);
            if (fileSize > size) {
                size = fileSize;
                largest = file;
            }
        }            
        return FileVisitResult.CONTINUE;
    }

    public Path getPath() { return largest; }
    public long getSize() { return size; }

    public static LargestFile find(Path start) throws IOException {
        LargestFile result = new LargestFile();
        Files.walkFileTree(start, result);
        return result;
    }
   
    public static void main(String[] args) throws Exception {
        LargestFile largest = LargestFile.find(Paths.get(args[0]));

        System.out.printf("%s %d\n", largest.getPath(), largest.getSize());
    }
}

Code:
java -cp . LargestFile /home/Downloads/dir_3/
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C das Doppelte des Wertes in der Console ausgeben Java Basics - Anfänger-Themen 10
tom.j85 Doppelte Foreach Schleife: Am Ende wird immer das Gleiche Objekt eingefügt Java Basics - Anfänger-Themen 4
H Größte Duplikat (Größte Doppelte Wert) eines Arrays ausgeben Java Basics - Anfänger-Themen 9
X Threads Zwei Threads, aber doppelte Ausgabe verhindern (synchronized) Java Basics - Anfänger-Themen 54
H Frage zur ermittlung eines doppelte Paars aus Sotieralgorithmus Java Basics - Anfänger-Themen 4
J Doppelte Ausgabe erzeugen Iterator Java Basics - Anfänger-Themen 6
L Doppelte Schleife Anpassen Java Basics - Anfänger-Themen 5
W Map doppelte Values löschen Java Basics - Anfänger-Themen 3
S CSV auf doppelte Einträge überprüfen Java Basics - Anfänger-Themen 8
S Doppelte Liste Einfügen Java Basics - Anfänger-Themen 1
M Argument in Integer verwandeln und das Doppelte davon printen Java Basics - Anfänger-Themen 9
T Klassen Doppelte Elemente aus Container entfernen Java Basics - Anfänger-Themen 6
M Erste Schritte Doppelte Ausgabe? (JList) Java Basics - Anfänger-Themen 1
kilopack15 Array auf doppelte Elemente überprüfen Java Basics - Anfänger-Themen 16
S Input/Output Doppelte Input-Abfrage Java Basics - Anfänger-Themen 3
K Input/Output Doppelte Ausgabe Java Basics - Anfänger-Themen 5
S Erste Schritte Doppelte Ausführung? Java Basics - Anfänger-Themen 4
E Threads Doppelte Threads beenden Java Basics - Anfänger-Themen 4
J Variablen Doppelte Werte in Int Array Java Basics - Anfänger-Themen 10
D Java doppelte Zahlen auch über 10 in einem String entfernen Java Basics - Anfänger-Themen 2
D Java doppelte Zahl/Zeichen in einem String entfernen Java Basics - Anfänger-Themen 6
S ArrayList Gruppieren, "Doppelte Werte" Addieren Java Basics - Anfänger-Themen 5
O Doppelte For-Scheife Java Basics - Anfänger-Themen 6
E Array doppelte Einträge Java Basics - Anfänger-Themen 2
S Variablen Array in ArrayList auf doppelte Einträge überprüfen Java Basics - Anfänger-Themen 4
M Einfache und Doppelte Operatoren Java Basics - Anfänger-Themen 3
P Doppelte Datensätze aus CSV-Datei löschen Java Basics - Anfänger-Themen 17
B Doppelte Werte aus Array entfernen ohne Import - Algorithmus Java Basics - Anfänger-Themen 5
P Doppelte Einträge in eine List Java Basics - Anfänger-Themen 5
S Array befüllen & auf doppelte werte prüfen Java Basics - Anfänger-Themen 6
B Klassen Doppelte werte Filtern XML, Datenbank und DOM Java Basics - Anfänger-Themen 3
R Doppelte löschen Java Basics - Anfänger-Themen 6
C Doppelte Einträge aus String [] Array entfernen. Java Basics - Anfänger-Themen 5
K Doppelte namen bei random Java Basics - Anfänger-Themen 3
U Doppelte Interfcae Implementierung Java Basics - Anfänger-Themen 10
M doppelte Einträge Emailempfänger... Java Basics - Anfänger-Themen 35
G txt-File als DB>doppelte Einträge verhindern/Suche/... Java Basics - Anfänger-Themen 10
DerGroßeNargus Doppelte Liste initialisieren Java Basics - Anfänger-Themen 2
H Datentypen Doppelte Verkette Liste - Verständnissproblem Java Basics - Anfänger-Themen 5
T Doppelte Liste Java Basics - Anfänger-Themen 8
R Schleife Doppelte Daten löschen Java Basics - Anfänger-Themen 3
V Doppelte Zahl suchen Java Basics - Anfänger-Themen 14
L Hilfe, doppelte Zufallszahlen Java Basics - Anfänger-Themen 13
G List suchen und doppelte rausfiltern Java Basics - Anfänger-Themen 3
T Doppelte Anführungszeichen ersetzen?? Java Basics - Anfänger-Themen 4
Luk10 Doppelte for-schleife Java Basics - Anfänger-Themen 7
P Doppelte Einträge in mehreren Textfiles finden und ausgeben Java Basics - Anfänger-Themen 8
T Array: Doppelte Charakteren löschen - Ein Lösungsversuch Java Basics - Anfänger-Themen 37
P doppelte Werte im Array ausgeben. Java Basics - Anfänger-Themen 4
J doppelte Einträge in einem Array Java Basics - Anfänger-Themen 7
M Aufgabe: Array auf doppelte Zahl prüfen Java Basics - Anfänger-Themen 8
-horn- Doppelte Einträge entfernen, aus Array, List oder sonstwas Java Basics - Anfänger-Themen 9
G _NUR_ doppelte Einträge in einem Array behalten Java Basics - Anfänger-Themen 3
J Doppelte Integer aus einem Array entfernen - seltsames Prob. Java Basics - Anfänger-Themen 5
G doppelte Einträge im String Array löschen Java Basics - Anfänger-Themen 21
C Doppelte Punktnotation Java Basics - Anfänger-Themen 2
0 ArrayList - doppelte Einträge entfernen? Java Basics - Anfänger-Themen 9
S Methode, um doppelte Einträge in Array zu finden Java Basics - Anfänger-Themen 5
F doppelte Elemente in HashSet Java Basics - Anfänger-Themen 5
G java.util.LinkedList: Doppelte Elemente vermeiden Java Basics - Anfänger-Themen 5
G Wie doppelte Einträge in ComboBox vermeiden ? Java Basics - Anfänger-Themen 9
M Doppelte Einträge in einer datei löschen(nach timestamp)! Java Basics - Anfänger-Themen 4
D Doppelte Einträge einer Liste löschen Java Basics - Anfänger-Themen 6
B 2 ELists vergleichen und doppelte Einträge löschen Java Basics - Anfänger-Themen 11
S "doppelte" if-Anweisung Java Basics - Anfänger-Themen 10
G Doppelte (Paar) Werte in einem Vektor finden Java Basics - Anfänger-Themen 6
F Doppelte Datensätze zusammenziehen Java Basics - Anfänger-Themen 2
V Doppelte Zahlen bei Lotto verhindern Java Basics - Anfänger-Themen 11
K Programm stoppt einfach ohne Grund Java Basics - Anfänger-Themen 4
V einfach verkettete Listen Java Basics - Anfänger-Themen 10
O Exception behandlung einfach Ueben mit Fakt! Java Basics - Anfänger-Themen 10
C Methoden Über eine einfach verkettete Liste Java Basics - Anfänger-Themen 8
Hanschyo Programm schließt sich einfach Java Basics - Anfänger-Themen 2
O Einfach verkettete Liste - Revert Methode Java Basics - Anfänger-Themen 1
S Einfach verkettete Liste Element an bestimmter Position einfügen Java Basics - Anfänger-Themen 24
S Einfach verkette Liste Java Basics - Anfänger-Themen 27
Hacer Operationen einfach verketteter Listen Java Basics - Anfänger-Themen 22
R Erste Schritte Verkettete Liste will einfach nicht in meinen Schädel Java Basics - Anfänger-Themen 11
C Methoden Einfach verkette Liste - int Werte aufsteigend sortieren Java Basics - Anfänger-Themen 1
V Codezeile wird einfach nicht ausgeführt Java Basics - Anfänger-Themen 23
M Quadrat zeichnen einfach bitte! Java Basics - Anfänger-Themen 2
J Einfach verkettet List: Ausgabe ohne null Java Basics - Anfänger-Themen 11
K Einfach Verkettete Liste - addFirst() Java Basics - Anfänger-Themen 7
N Einfacher Rechner (für mich nicht so einfach) Java Basics - Anfänger-Themen 5
M Array in ein Array übertragen (möglichst einfach) Java Basics - Anfänger-Themen 6
T Input/Output Daten/Objekte einfach speichern Java Basics - Anfänger-Themen 5
R Methoden... ich vesteh sie einfach nicht Java Basics - Anfänger-Themen 15
llabusch Verkette Listen - Einfach und Doppelt Java Basics - Anfänger-Themen 3
X Einfach verkettete Liste, keine Fehlermeldung Programm friert ein Java Basics - Anfänger-Themen 4
C Erste Schritte Problem mit der Division von Koeffizienten... oder einfach nur irgendwlechen zahlen Java Basics - Anfänger-Themen 10
D Klassen Klassen, Objekte, Konstruktor - einfach erklärt Java Basics - Anfänger-Themen 12
B Variable wird einfach so wieder auf "null" gesetzt Java Basics - Anfänger-Themen 12
T Elemente im Vector werden einfach überschrieben! Java Basics - Anfänger-Themen 3
X Einfach Verkettete Liste Java Basics - Anfänger-Themen 16
S ich begreife es einfach nicht -> zweck der Schnittstellen Java Basics - Anfänger-Themen 27
J Interface Wie funktioniert das mit den Interfaces. Ich verstehe es einfach nicht! :( Java Basics - Anfänger-Themen 15
W Java-Programm als Icon mit Doppelklick einfach öffnen ? Java Basics - Anfänger-Themen 3
M Layout einfach bilden Java Basics - Anfänger-Themen 4
I Weiß einfach nicht mehr weiter... Java Basics - Anfänger-Themen 3
K Datentypen Einfach/Doppelt verkettete Liste Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Anzeige

Neue Themen


Oben