Я пытаюсь просмотреть три самых новых файла в каталоге. Прямо сейчас я использую ls -t | head -3
, чтобы узнать их имена и просто записать их в команде scp, но это становится трудным. Я попытался использовать ls -t | head -3 | scp *username*@*address*:*path*
, но это не сработало. Какой был бы лучший способ сделать это?Scp the Three Newest Files with Bash
ответ
возможно самое простое решение, но оно не имеет дело с пробелами в именах файлов
scp `ls -t | head -3` [email protected]:.
с помощью xargs имеет преимущество дело с пробелами в именах файлов , но будет выполнять scp три раза
ls -t | head -3 | xargs -i scp {} [email protected]:.
решение на основе петли будет выглядеть следующим образом: , Мы используем в то время как прочитать здесь, потому что разделитель по умолчанию для чтения является символ новой строки не символ пробела как для цикла
ls -t | head -3 | while read file ; do scp $file [email protected] ; done
saddly, идеальное решение, один, который выполняет одну команду Scp во время работы хорошо с белым пространством, ускользает от меня в данный момент.
Напишите простой скрипт bash. Этот будет отправлять последние три файла, пока они являются файлом, а не каталогом.
#!/Bin/Баш
DIR=`/bin/pwd`
for file in `ls -t ${DIR} | head -3`:
do
if [ -f ${file} ];
then
scp ${file} [email protected]:destinationDirectory
fi
done
Попробуйте этот сценарий ПКПП последние 3 файла из прилагаемого пути первого аргумента для этого сценария:
#!/bin/bash
DIR="$1"
for f in $(ls -t `find ${DIR} -maxdepth 1 -type f` | head -3)
do
scp ${f} [email protected]:destinationDirectory
done
find -type f
убеждается только файлы находятся в $ {DIR} и head -3
занимает верхние 3 файлов.
Это решение не удастся, если в имени файла есть пробел. Вы должны использовать чтение. – ltc
Это, вероятно, не имеет отношения больше для плаката, но вы привели меня к мысли, которую я считаю, что вы хотите:
tar cf - `ls -t | head -3` | ssh *username*@*server* tar xf - -C *path*
Это умное использование смолы. Я должен буду попробовать это в следующий раз, когда мне понадобится использовать эту команду. Спасибо за сообщение! –
- 1. scp files from вчера
- 2. Bash Script: Mass Restore Files with Sleuthkit
- 3. php include file with newest date
- 4. three dropdownlist with auto postback
- 5. left join with three tables
- 6. Java: Out with the Old, In with the New
- 7. Puzzled with nib files
- 8. PHP Включить $ newest Issue
- 9. bash zip omit files
- 10. Использование expect, spawn with scp
- 11. Sprite Collision With Three Different Sprites?
- 12. parse log files with f #
- 13. Ошибка при использовании команды scp «bash: scp: command not found»
- 14. sql join query issue with three table
- 15. MySQL Left Join With Three Tables
- 16. TrackballControls with Collada kfAnimation Three JS
- 17. THREE = require './three'
- 18. php files listing with shell_exec
- 19. .htaccess auth files with wordpress
- 20. Throwing Object With The Mouse
- 21. andengine mousejoint with the gravity
- 22. Paging With the Cartesian Product
- 23. Grep with ruby the gemlist
- 24. Batch File delete newest file
- 25. Camping with the Pure Ruby database
- 26. Regexp_replace Bigquery match 'Книга джунглей, The' with 'The Jungle Book
- 27. Nant - Get Newest Folder
- 28. postgresql update newest rows
- 29. Bash array with loop
- 30. SCP/Bash Эхо файлы, которые были скопированы?
Как и в другом ответе, он также отправит только 1 файл, если первые 2 записи НЕ являются файлами. – anubhava
Я не верю, что плакат когда-либо указывал в его требованиях, что ему нужно иметь дело с каталогами. Фактически то, что он делал, подразумевает, что он этого не делает. – ltc
интересное использование опции -i/{} xarg. Это приведет только к 1 вызову scp, а не к 3 вызовам, которые мы ожидаем от решения на основе цикла? – shellter