Какая команда для ssh найти файлы, которые * .png и загрузить их

У меня было подобное поведение в 14.04: замораживание экрана и необходимость входа в систему после alt-tab. не всегда, но достаточно часто, чтобы раздражать. Кажется, это нужно решить сейчас:

Установленная конфигурация compiz В разделе «Рабочий стол», который отключил Ubuntu Unity Plugin, он снова включил этот плагин

Compiz теперь жаловался на конфликт («Показать «плагин для рабочего стола», если я хорошо помню) и предложил разрешить это, что я с радостью принял.

et voila.

jvdw

4
задан 8 August 2011 в 13:46

14 ответов

Вы можете перечислить интересующие вас файлы с помощью ssh, а затем загрузить их с помощью scp:

ssh user@host find /remote_path -iname '*.png' | 
  while read pngfile; do 
    scp user@host:"$pngfile" /local_path
  done

Все *.png файлы в /remote_path будут загружены в /local_path, но удаленная структура каталогов не будет создана (все файлы будут помещены в один каталог), поэтому у вас могут быть проблемы, если у вас есть два файла с одинаковым именем в разных каталогах.

Edit [!d2 ]

Командная строка удаленного find должна быть исправлена ​​следующим образом:

find /remote_path -iname "'*.png'"

, где внутренняя пара одинарных кавычек необходима, чтобы избежать расширения пула локальной оболочки *, если необходима внешняя пара двойных кавычек, чтобы избежать расширения пула удаленных оболочек *.

Двумя типами котировок могут быть обмены, и могут использоваться другие синтаксисы, такие как \''*.png'\', \""*.png"\" или "\"*.png\"".

Если вы этого не сделали. png в удаленном домашнем каталоге, нет никакой разницы между двумя командами, но лучше быть в безопасности.

6
ответ дан 25 May 2018 в 19:26
  • 1
    Спасибо, Что такое язык программирования в вашем " while " заявление? – Smile.Hunter 8 August 2011 в 15:08
  • 2
    Это инструкция bash, представленная также в других оболочках, см. mywiki.wooledge.org/BashGuide – enzotib 8 August 2011 в 15:16
  • 3
    1. Если у вас нет ключей, вам нужно будет предоставить пароль для каждого файла. 2. Это очень медленное решение. 3. не будет работать, если имя файла имеет пробел – Michał Šrajer 8 August 2011 в 17:41
  • 4
    если вы хотите передать несколько файлов, вы можете использовать " -r " для scp, но решение с tar будет в любом случае быстрее. – Michał Šrajer 8 August 2011 в 17:43
  • 5
    @ Michał Šrajer: исправлена ​​проблема с пространством. Более того, -r получит целые каталоги, я думаю, не только нужные типы файлов. – enzotib 8 August 2011 в 17:48

Вы можете перечислить интересующие вас файлы с помощью ssh, а затем загрузить их с помощью scp:

ssh user@host find /remote_path -iname '*.png' | while read pngfile; do scp user@host:"$pngfile" /local_path done

Все *.png файлы в /remote_path будут загружены в /local_path, но удаленная структура каталогов не будет создана (все файлы будут помещены в один каталог), поэтому у вас могут быть проблемы, если у вас есть два файла с одинаковым именем в разных каталогах.

Edit

Командная строка удаленного find должна быть исправлена ​​следующим образом:

find /remote_path -iname "'*.png'"

, где внутренняя пара одинарных кавычек необходима, чтобы избежать расширения пула локальной оболочки *, если необходима внешняя пара двойных кавычек, чтобы избежать расширения пула удаленных оболочек *.

Двумя типами котировок могут быть обмены, и могут использоваться другие синтаксисы, такие как \''*.png'\', \""*.png"\" или "\"*.png\"".

Если вы этого не сделали. png в удаленном домашнем каталоге, нет никакой разницы между двумя командами, но лучше быть в безопасности.

6
ответ дан 25 July 2018 в 21:29

Вы можете перечислить интересующие вас файлы с помощью ssh, а затем загрузить их с помощью scp:

ssh user@host find /remote_path -iname '*.png' | while read pngfile; do scp user@host:"$pngfile" /local_path done

Все *.png файлы в /remote_path будут загружены в /local_path, но удаленная структура каталогов не будет создана (все файлы будут помещены в один каталог), поэтому у вас могут быть проблемы, если у вас есть два файла с одинаковым именем в разных каталогах.

Edit

Командная строка удаленного find должна быть исправлена ​​следующим образом:

find /remote_path -iname "'*.png'"

, где внутренняя пара одинарных кавычек необходима, чтобы избежать расширения пула локальной оболочки *, если необходима внешняя пара двойных кавычек, чтобы избежать расширения пула удаленных оболочек *.

Двумя типами котировок могут быть обмены, и могут использоваться другие синтаксисы, такие как \''*.png'\', \""*.png"\" или "\"*.png\"".

Если вы этого не сделали. png в удаленном домашнем каталоге, нет никакой разницы между двумя командами, но лучше быть в безопасности.

6
ответ дан 31 July 2018 в 12:47

Вы можете перечислить интересующие вас файлы с помощью ssh, а затем загрузить их с помощью scp:

ssh user@host find /remote_path -iname '*.png' | while read pngfile; do scp user@host:"$pngfile" /local_path done

Все *.png файлы в /remote_path будут загружены в /local_path, но удаленная структура каталогов не будет создана (все файлы будут помещены в один каталог), поэтому у вас могут быть проблемы, если у вас есть два файла с одинаковым именем в разных каталогах.

Edit

Командная строка удаленного find должна быть исправлена ​​следующим образом:

find /remote_path -iname "'*.png'"

, где внутренняя пара одинарных кавычек необходима, чтобы избежать расширения пула локальной оболочки *, если необходима внешняя пара двойных кавычек, чтобы избежать расширения пула удаленных оболочек *.

Двумя типами котировок могут быть обмены, и могут использоваться другие синтаксисы, такие как \''*.png'\', \""*.png"\" или "\"*.png\"".

Если вы этого не сделали. png в удаленном домашнем каталоге, нет никакой разницы между двумя командами, но лучше быть в безопасности.

6
ответ дан 2 August 2018 в 03:07

Вы можете просматривать файлы вашего интереса с ssh, а затем загрузить их с scp:

ssh user@host find /remote_path -iname '*.png' | while read pngfile; do scp user@host:"$pngfile" /local_path done

все *.png файлы /remote_path будут загружены на /local_path, но удаленный каталог структуры создаваться не будут (все файлы будут помещены в тот же каталог), поэтому могут возникнуть проблемы, если у вас есть два файла с одинаковым именем в разных каталогах.

редактировать

пульта ДУ find линия должна быть Исправлена следующим образом:

find /remote_path -iname "'*.png'"

, где внутренняя пара одинарные кавычки необходимы, чтобы избежать локального расширения оболочки путь на [F9], как внешние двойные кавычки нужны, чтобы избежать расширения удаленной оболочки путь *.

два типа котировки могут быть биржи, и другие синтаксисы могут быть использованы, как на [F11], \""*.png"\" или [от f13].

если у вас нет .PNG в домашней директории удаленного, нет никакой разницы между двумя командами, но это лучше, чтобы быть безопасным.

6
ответ дан 4 August 2018 в 18:59

Вы можете перечислить интересующие вас файлы с помощью ssh, а затем загрузить их с помощью scp:

ssh user@host find /remote_path -iname '*.png' | while read pngfile; do scp user@host:"$pngfile" /local_path done

Все *.png файлы в /remote_path будут загружены в /local_path, но удаленная структура каталогов не будет создана (все файлы будут помещены в один каталог), поэтому у вас могут быть проблемы, если у вас есть два файла с одинаковым именем в разных каталогах.

Edit

Командная строка удаленного find должна быть исправлена ​​следующим образом:

find /remote_path -iname "'*.png'"

, где внутренняя пара одинарных кавычек необходима, чтобы избежать расширения пула локальной оболочки *, если необходима внешняя пара двойных кавычек, чтобы избежать расширения пула удаленных оболочек *.

Двумя типами котировок могут быть обмены, и могут использоваться другие синтаксисы, такие как \''*.png'\', \""*.png"\" или "\"*.png\"".

Если вы этого не сделали. png в удаленном домашнем каталоге, нет никакой разницы между двумя командами, но лучше быть в безопасности.

6
ответ дан 6 August 2018 в 03:20

Вы можете просматривать файлы вашего интереса с ssh, а затем загрузить их с scp:

ssh user@host find /remote_path -iname '*.png' | while read pngfile; do scp user@host:"$pngfile" /local_path done

все *.png файлы /remote_path будут загружены на /local_path, но удаленный каталог структуры создаваться не будут (все файлы будут помещены в тот же каталог), поэтому могут возникнуть проблемы, если у вас есть два файла с одинаковым именем в разных каталогах.

редактировать

пульта ДУ find линия должна быть Исправлена следующим образом:

find /remote_path -iname "'*.png'"

, где внутренняя пара одинарные кавычки необходимы, чтобы избежать локального расширения оболочки путь на [F9], как внешние двойные кавычки нужны, чтобы избежать расширения удаленной оболочки путь *.

два типа котировки могут быть биржи, и другие синтаксисы могут быть использованы, как на [F11], \""*.png"\" или [от f13].

если у вас нет .PNG в домашней директории удаленного, нет никакой разницы между двумя командами, но это лучше, чтобы быть безопасным.

6
ответ дан 7 August 2018 в 21:04

Самый быстрый способ, который я знаю, - это дистанционно создать tar.gz, передать его через SSH и развернуть локально:

ssh user@remotehost 'find /remote/path/ -name "*.png" -print0 2>/dev/null | xargs -0 tar cfz - ' | tar xvfz -

Это будет работать с именами файлов с пробелами и быстрее, чем scp -r и много быстрее, чем scp для каждого файла.

2
ответ дан 25 May 2018 в 19:26
  • 1
    bash: синтаксическая ошибка около неожиданного токена `) ' – enzotib 8 August 2011 в 17:42
  • 2
    также когда синтаксически корректно, он разбивает имена файлов с пробелами. – enzotib 8 August 2011 в 17:50
  • 3
    исправлено. теперь он имеет дело с именами файлов с пробелами и быстрее, чем другое решение. – Michał Šrajer 8 August 2011 в 18:02
  • 4
    Его можно сократить до: ssh user@remotehost 'find /remote/path/ -name "*.png" | tar -T- cfz - ' | tar xvfz - – enzotib 8 August 2011 в 18:03
  • 5
    @enzotib: Я не знал -Т-. Хороший трюк. Однако это не работает: tar: вы должны указать один из параметров -Acdtrux' or - test-label – Michał Šrajer 8 August 2011 в 18:09

Самый быстрый способ, который я знаю, - это дистанционно создать tar.gz, передать его через SSH и развернуть локально:

ssh user@remotehost 'find /remote/path/ -name "*.png" -print0 2>/dev/null | xargs -0 tar cfz - ' | tar xvfz -

Это будет работать с именами файлов с пробелами и быстрее, чем scp -r и много быстрее, чем scp для каждого файла.

2
ответ дан 25 July 2018 в 21:29
  • 1
    bash: синтаксическая ошибка около неожиданного токена `) ' – enzotib 8 August 2011 в 17:42
  • 2
    также когда синтаксически корректно, он разбивает имена файлов с пробелами. – enzotib 8 August 2011 в 17:50
  • 3
    исправлено. теперь он имеет дело с именами файлов с пробелами и быстрее, чем другое решение. – Michał Šrajer 8 August 2011 в 18:02
  • 4
    Его можно сократить до: ssh user@remotehost 'find /remote/path/ -name "*.png" | tar -T- cfz - ' | tar xvfz - – enzotib 8 August 2011 в 18:03
  • 5
    @enzotib: Я не знал -Т-. Хороший трюк. Однако это не работает: tar: вы должны указать один из параметров -Acdtrux' or - test-label – Michał Šrajer 8 August 2011 в 18:09

Самый быстрый способ, который я знаю, - это дистанционно создать tar.gz, передать его через SSH и развернуть локально:

ssh user@remotehost 'find /remote/path/ -name "*.png" -print0 2>/dev/null | xargs -0 tar cfz - ' | tar xvfz -

Это будет работать с именами файлов с пробелами и быстрее, чем scp -r и много быстрее, чем scp для каждого файла.

2
ответ дан 31 July 2018 в 12:47
  • 1
    bash: синтаксическая ошибка около неожиданного токена `) ' – enzotib 8 August 2011 в 17:42
  • 2
    также когда синтаксически корректно, он разбивает имена файлов с пробелами. – enzotib 8 August 2011 в 17:50
  • 3
    исправлено. теперь он имеет дело с именами файлов с пробелами и быстрее, чем другое решение. – Michał Šrajer 8 August 2011 в 18:02
  • 4
    Его можно сократить до: ssh user@remotehost 'find /remote/path/ -name "*.png" | tar -T- cfz - ' | tar xvfz - – enzotib 8 August 2011 в 18:03
  • 5
    @enzotib: Я не знал -Т-. Хороший трюк. Однако это не работает: tar: вы должны указать один из параметров -Acdtrux' or - test-label – Michał Šrajer 8 August 2011 в 18:09

Самый быстрый способ, который я знаю, - это дистанционно создать tar.gz, передать его через SSH и развернуть локально:

ssh user@remotehost 'find /remote/path/ -name "*.png" -print0 2>/dev/null | xargs -0 tar cfz - ' | tar xvfz -

Это будет работать с именами файлов с пробелами и быстрее, чем scp -r и много быстрее, чем scp для каждого файла.

2
ответ дан 2 August 2018 в 03:07
  • 1
    bash: синтаксическая ошибка около неожиданного токена `) ' – enzotib 8 August 2011 в 17:42
  • 2
    также когда синтаксически корректно, он разбивает имена файлов с пробелами. – enzotib 8 August 2011 в 17:50
  • 3
    исправлено. теперь он имеет дело с именами файлов с пробелами и быстрее, чем другое решение. – Michał Šrajer 8 August 2011 в 18:02
  • 4
    Его можно сократить до: ssh user@remotehost 'find /remote/path/ -name "*.png" | tar -T- cfz - ' | tar xvfz - – enzotib 8 August 2011 в 18:03
  • 5
    @enzotib: Я не знал -Т-. Хороший трюк. Однако это не работает: tar: вы должны указать один из параметров -Acdtrux' or - test-label – Michał Šrajer 8 August 2011 в 18:09

Самый быстрый способ, который я знаю, - это дистанционно создать tar.gz, передать его через SSH и развернуть локально:

ssh user@remotehost 'find /remote/path/ -name "*.png" -print0 2>/dev/null | xargs -0 tar cfz - ' | tar xvfz -

Это будет работать с именами файлов с пробелами и быстрее, чем scp -r и много быстрее, чем scp для каждого файла.

2
ответ дан 4 August 2018 в 18:59
  • 1
    bash: синтаксическая ошибка около неожиданного токена `) ' – enzotib 8 August 2011 в 17:42
  • 2
    также, когда синтаксически правильным, оно распадается на имена файлов с пробелами. – enzotib 8 August 2011 в 17:50
  • 3
    исправлено. теперь он имеет дело с именами файлов с пробелами и быстрее, чем другое решение. – Michał Šrajer 8 August 2011 в 18:02
  • 4
    Его можно сократить до: ssh user@remotehost 'find /remote/path/ -name "*.png" | tar -T- cfz - ' | tar xvfz - – enzotib 8 August 2011 в 18:03
  • 5
    @enzotib: Я не знал -Т-. Хороший трюк. Однако это не работает: tar: вы должны указать один из параметров -Acdtrux' or - test-label – Michał Šrajer 8 August 2011 в 18:09

Самый быстрый способ, который я знаю, - это дистанционно создать tar.gz, передать его через SSH и развернуть локально:

ssh user@remotehost 'find /remote/path/ -name "*.png" -print0 2>/dev/null | xargs -0 tar cfz - ' | tar xvfz -

Это будет работать с именами файлов с пробелами и быстрее, чем scp -r и много быстрее, чем scp для каждого файла.

2
ответ дан 6 August 2018 в 03:20
  • 1
    bash: синтаксическая ошибка около неожиданного токена `) ' – enzotib 8 August 2011 в 17:42
  • 2
    также когда синтаксически корректно, он разбивает имена файлов с пробелами. – enzotib 8 August 2011 в 17:50
  • 3
    исправлено. теперь он имеет дело с именами файлов с пробелами и быстрее, чем другое решение. – Michał Šrajer 8 August 2011 в 18:02
  • 4
    Его можно сократить до: ssh user@remotehost 'find /remote/path/ -name "*.png" | tar -T- cfz - ' | tar xvfz - – enzotib 8 August 2011 в 18:03
  • 5
    @enzotib: Я не знал -Т-. Хороший трюк. Однако это не работает: tar: вы должны указать один из параметров -Acdtrux' or - test-label – Michał Šrajer 8 August 2011 в 18:09

Самый быстрый способ, который я знаю, - это дистанционно создать tar.gz, передать его через SSH и развернуть локально:

ssh user@remotehost 'find /remote/path/ -name "*.png" -print0 2>/dev/null | xargs -0 tar cfz - ' | tar xvfz -

Это будет работать с именами файлов с пробелами и быстрее, чем scp -r и много быстрее, чем scp для каждого файла.

2
ответ дан 7 August 2018 в 21:04
  • 1
    bash: синтаксическая ошибка около неожиданного токена `) ' – enzotib 8 August 2011 в 17:42
  • 2
    также когда синтаксически корректно, он разбивает имена файлов с пробелами. – enzotib 8 August 2011 в 17:50
  • 3
    исправлено. теперь он имеет дело с именами файлов с пробелами и быстрее, чем другое решение. – Michał Šrajer 8 August 2011 в 18:02
  • 4
    Его можно сократить до: ssh user@remotehost 'find /remote/path/ -name "*.png" | tar -T- cfz - ' | tar xvfz - – enzotib 8 August 2011 в 18:03
  • 5
    @enzotib: Я не знал -Т-. Хороший трюк. Однако это не работает: tar: вы должны указать один из параметров -Acdtrux' or - test-label – Michał Šrajer 8 August 2011 в 18:09

Другие вопросы по тегам:

Похожие вопросы: