Ich versuche, Dateien und Unterordner aus einem Ordner ohne das A selbst zu kopieren . Zum Beispiel A enthalten Ordner weiter:
| file1.txt
| file2.txt
| subfolder1
Beim Ausführen des nächsten Befehls erhalte ich ein falsches Ergebnis:
sudo cp -r /home/username/A/ /usr/lib/B/
Das Ergebnis ist
/usr/lib/B/A/...copied files...
anstatt..
/usr/lib/B/...copied files...
Wie kann ich den erwarteten ohne Ursprungsordner erreichen?
bash
command-line
cp
pushandpop
quelle
quelle
A/*
macht Sinn, aber es gibt Situationen, in denen es nicht funktioniert.shopt
istbash
spezifisch. Mitzsh
verwenden*(D)
. mitksh93
,FIGNORE='@(.|..)'
.cp -t
ist GNU-spezifisch. Dasfind
funktioniert nicht richtig, da es sowohlA/
den Inhalt als auch die Unterverzeichnisse mehrmals kopiert.-maxdepth 1
(-mindepth
und-maxdepth
GNU-Erweiterungen werden jetzt auch von ein paar anderen unterstützt. Portabelfind .../. ! -name . -prune -exec ....
)find .../.
verursacht hier einen Fehler.Wenn auf einem GNU-System, von
man cp
:So können Sie
cp -rT /home/username/A/ /usr/lib/B/
genau das Richtige schreiben .quelle
cp
. Aber das stimmt, dass-T
es mit einem Nicht-GNU nicht funktioniertcp
.Sagen Sie
cp
, dass Sie den Inhalt des Verzeichnisses und nicht das Verzeichnis selbst kopieren möchten:quelle
shopt -s dotglob
dafür arbeiten, wenn Dotfiles vorhanden sind/home/username/A/
.