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/
Scott Szretter
źródło

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)

Benjamin Bannier
źródło
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.)

Jamieson Becker
źródło
Do pisania z uprawnieniami roota, sudo tee $filename >/dev/null jest trochę bardziej idiomatyczny niż używanie dd.
dcoles
1

Możesz spróbować użyć & gt; przekierować wynik do żądanego miejsca.

jangelfdez
źródło