In den Verzeichnissen ~/temp/a/foo/
und ~/temp/b/foo foo/
Ich habe einige Dateien bar1
genannt, bar2
, bar bar1
, bar bar2
usw.doppelte Anführungszeichen vs Stern Dateinamen Expansion in Bash
Ich versuche, eine Linie von Bash zu schreiben, dass Kopien all diese Dateien in einem Verzeichnis mit "foo" als letzten Teil des Namens zum Ordner über dem jeweiligen "foo" -Ordner.
Solange es keine Leerzeichen in den Dateinamen sind, ist dies eine einfache Aufgabe, aber die beiden folgenden Befehle fehlschlagen, wenn mit dem foo foo
Verzeichnis zu tun:
for dir in `find . -type d -name '*foo'` ; do cp $dir/* "$(echo $dir|sed 's_foo__g')" ; done
(Der cp
Befehl schlägt fehl, die sehen letzte foo
von "foo foo"
als Teil des gleichen Verzeichnisnamen.)
for dir in `find . -type d -name '*foo'` ; do cp "$dir/*" "$(echo $dir|sed 's_foo__g')" ; done
("$dir/*"
nicht ausgeklappt.)
Versuche, $dir/*
durch "$(echo $dir/*)"
zu ersetzen, waren noch weniger erfolgreich.
Gibt es eine einfache Möglichkeit, $dir/*
zu erweitern, so dass cp
versteht?
Siehe http://mywiki.wooledge.org/DontReadLinesWithFor –