Chcę stworzyć skrypt Bash, który będzie wyświetlał najnowszy utworzony katalog i jeśli znajdzie najnowszy katalog, musi skopiować pliki na ten katalog.
Obecnie mam ten kod
#!/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
Ten fragment kodu pokazuje najnowszy utworzony katalog, ale nie mogę dowiedzieć się, jak to zrobić, aby następnie kopiował elementy do tego katalogu
Jako przykład.
./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 DirectoryDir-2
-------------------------------------------------------
./script.sh
# Searching the newest Directory
# Found out that the newest Directory is Dir-3
# Copy the files to the Directory Dir-3
Odpowiedzi:
0 dla odpowiedzi № 1Musisz wydrukować tylko nazwę najnowszego katalogu, więc nie potrzebujesz opcji -l ls
. Usuwa to również linię „sum”, więc pożądanym wyjściem jest pierwsza linia.
ls -t | sed -n 1p
Następnie użyj $()
(podstawienie polecenia) składnia przechwytująca dane wyjściowe polecenia do zmiennej:
latest=$(ls -t | sed -n 1p)
a następnie możesz użyć tej zmiennej w swoim cp
dowództwo:
cp file file file $latest
To wszystko zakłada, że nie masz zwykłych plików nowszych niż katalog docelowy i że nazwy twoich katalogów nie zawierają spacji ani innych niezwykłych znaków.
Prawdopodobnie byłoby nieco szybciej korzystać z head
polecenie, aby wziąć pierwszą linię twojego ls
wyjście, zamiast sed
.
ls -t | head -1