Jak mogę strzelać do innego katalogu docelowego?


69

Jak mogę strzelać do katalogu docelowego innego niż bieżący?

To nie zadziałało:

gunzip *.gz /putthemhere/

Odpowiedzi:


91

Zapytać gunzip do wyjścia na standardowe wyjście i przekierowania do pliku w tym katalogu:

gunzip -c file.gz > /THERE/file

zcat jest skrótem do gunzip -c.

Jeśli chcesz gunzipować wiele plików, iteruj wszystkie pliki:

for f in *.gz; do
  STEM=$(basename "${f}" .gz)
  gunzip -c "${f}" > /THERE/"${STEM}"
done

(tutaj basename służy do pobrania części nazwy pliku bez rozszerzenia)


2
Tworzy plik, ale nie zachowuje prawa własności, uprawnień itp. Może to być dobre lub złe w zależności od konkretnej sytuacji.
Chris Johnson

2

Jeśli chcesz wyodrębnić pojedynczy plik i napisz do katalogu należącego do roota, a następnie użyj sudo dd:

zcat filename.conf.gz | sudo tee /etc/filename.conf >/dev/null

Jeśli plik pochodzi ze zdalnego źródła (np. Ssh, curl https itp.), Możesz to zrobić w ten sposób:

ssh remoteserver cat filename.conf.gz | zcat | sudo tee /etc/filename.conf >/dev/null

(Zauważ, że te przykłady działają tylko dla a pojedynczy plik, w przeciwieństwie do przykładu * .gz, który jest wszystkimi plikami gzip w katalogu.)


Do pisania z uprawnieniami roota, sudo tee $filename >/dev/null jest trochę bardziej idiomatyczny niż używanie dd.
dcoles

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.