Portál AbcLinuxu, 12. května 2025 18:20
cd zdrojovaslozka/* cilovaslozka
zkopíruji všechny soubory z jedne složky do druhé. Když do příkazu přidám parametr -i, tak bude potřeba každý soubor, který se stejně jmenuje, potvrdit, jestli ho chci přepsat. Zadáním y a entr se přepíše, zmáčknutím jen entr se nepřepíše. Když do příkazu použiju parametr -b, tak se to nebude na nic ptát a všechny soubory, které se jmunují stejně, přepíše, ale vyrobí k nim založní kopii původního. Jaký parametr mám ale použít, když chci, aby mi to všechny soubory se stejným jménem přepsalo automaticky bez zeptání a bez založní kopie původního? Zkoušel jsem ten příkaz zadat bez parametru, ale to nepomůže, funguje to, jako s parametrem -i.
alias | grep alias cp
? Hádám, že to řekne alias cp=cp -i
. Jo-li, pak ten alias odstraň z některého ze souborů
~/.bashrc, ~/.bash_profile, ~/.profile, /etc/profile, /etc/bash.bashrc
alias | grep alias cp
mi řekne:
grep: cp: není souborem ani adresářem
.
Žádné aliasy jsem zatím nevytvářel, takže bych je ani neměl mít.
alias | grep 'alias cp'
Alias můžeš mít nastaven už od výroby.
Takže za prvé to není cd
, ale cp
(z anglického copy). Za druhé jsi nám neřekl, zda chceš kopírovat rekursivně, tzn. kopírovat i případné podadresáře. Zkus si např. příkazem echo zdrojovaslozka/*
vypsat, co by se kopírovalo a zjistíš, že v tom seznamu budou i podadresáře (pokud tedy tam nějaké byly). Myslím, že by ti mohlo pomoci:
cp --force --recursive zdrojovaslozka/ cilovaslozka
Jinak kolega nade mnou správně poznamenal s tím aliasem. V tom to možná bude.
Jinak "korektnější" zápis je:
/bin/cp --force --recursive zdrojovaslozka/ cilovaslozka
Pokud bys potřeboval skutečně zkopírovat jenom soubory, nikoli tedy podadresáře, tak se ozvi -- najdeme pro tebe "nejlepší" řešení.
cp
, ale omylem jsem napsal cd
a už to nejde přepsat.
yes | cp -i ....
Ale jinak si myslím, že řešení vašeho dotazu je přepínač -f (--force)cp --force --recursive zdrojovaslozka/* cilovaslozka
nefungovalo to. Když jsem však vynechal tu hvězdičku, už to funguje lépe až na jednu věc: V cílové složce se mi objevily všechny soubory, ale vedle ních navíc nová složka, která se jmenuje stejně jak zdrojová, a v ni některé podruhé zkopírované soubory.
cp -f zdrojovaslozka/ cilovaslozka
a to neudělalo nic, jenom odpovědělo:
cp: omitting directory `zdrojovaslozka`
cp -f zdrojovaslozka/* cilovaslozka
a to už konečně funguje podle toho, jak jsem chtěl. Stejně tak funguje taky cp --force zdrojovaslozka/* cilovaslozka
Takže hledaný parametr byl opravdu -f
nebo --force
.
Je dobře, že jste našel řešení. Jinak já jsem "zmlsaný" programem rsync
, takže už ani "obyčejný" cp
moc nepoužívám. A tak jsem poradil tak, jak jsem poradil.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.