2015-08-08 4 views
-2

Я хочу создать сценарий Bash, который может видеть последний созданный каталог, и если он нашел новый каталог, ему нужно скопировать файлы в этот.Скопируйте файлы в новейший каталог

В настоящее время у меня есть этот код

#!/bin/bash 

     cd /home/test/hello 
     echo "Searching, the latest made Directory!" 
     ls -tl | sed -n 2p 
#It is not copying yet, because i can't figure out how to let it Copy the stuff to the newest Directory 

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

Итак, как пример.

./script.sh 
# Searching the newest Directory 
# Found out that the newest Directory is Dir-1 
# Copy the files to the Directory Dir-1 
------------------------------------------------------- 
./script.sh 
# Searching the newest Directory 
# Found out that the newest Directory is Dir-2 
# Copy the files to the Directory\Dir-2 
------------------------------------------------------- 
./script.sh 
# Searching the newest Directory 
# Found out that the newest Directory is Dir-3 
# Copy the files to the Directory Dir-3 
+0

Там, должны быть и другие способы сделать это Исли я думаю .. – Vanture

+0

Потому что я не так хорошо в Bash, но просто нужно иметь это продолжать частный проект меня. – Vanture

ответ

0

Вы должны напечатать только название последнего каталога, так что вам не нужен параметр -l для ls. Это также удаляет строку «итоговые», поэтому ваш желаемый результат является первой строкой.

ls -t | sed -n 1p 

Затем используйте (command substitution) синтаксис $() захватить вывод команды в переменную:

latest=$(ls -t | sed -n 1p) 

, а затем вы можете использовать эту переменную в вашей cp команды:

cp file file file $latest 

Все это предполагает, что у вас нет обычных файлов, более новых, чем целевой каталог, и что имена ваших каталогов не имеют пробелов или других необычных символов в них.

Возможно, было бы немного быстрее использовать команду head, чтобы перенести первую строку вашего вывода ls, а не sed.

ls -t | head -1 
+0

Если я использую этот код «#/бен/Баш последние = $ (Ls -tl | СЕПГ -n 2р)! ф -r test.txt $ последнего» Это не работает это говоря «cp: недействительная опция -« w » Попробуйте' cp --help 'для получения дополнительной информации. « – Vanture

+0

Что именно' ls -tl | sed -n 2p' output? – rojomoke

+0

Если, я делаю только эту команду (не в сценарии Bash), она будет отображать самый новый сделанный вывод каталога: «drwxr-xr-x. 2 root root 4096 08.08 09:53 test-2 » Но, если Я создаю Bash-скрипт, он не работает. – Vanture

Смежные вопросы