To polecenie:
find ./ -name "mybinaryrpm-1.0.24-1.1.i586.rpm"
daje wynik:
./DirectoryName/SubDirectory/mybinaryrpm-1.0.24-1.1.i586.rpm
ale chcę tylko wynik:
mybinaryrpm-1.0.24-1.1.i586.rpm
Jak mogę to zdobyć?
Co tak naprawdę próbuję zrobić:
- Przeczytaj plik wejściowy, który zawiera listę nazw plików binarnych oddzielonych od siebie liniami
- Wyszukaj pliki o odpowiednich nazwach w bieżącym katalogu rekurencyjnie
- Jeśli znaleziono więcej niż jedno dopasowanie, rozważ tylko jeden wynik wyszukiwania i skopiuj plik do odpowiedniego katalogu docelowego.
Aktualny kod:
while read line; do
binaryRpm=$(find ./ -name "$line" -exec basename {} \;)
echo " [ Read From File: $line ] <==> [ Find Command Searched: $binaryRpm ]"
## If found then copy the binary file to dest dir
## TODO: If Find Command finds more than One File with the
## Same Name, then ONLY ONE FILE MUST be Compared and copied to
## the Release Directory
if [ "$line" != "$binaryRpm" ]; then
echo "---------- Binary File Searching---------- "
continue
else
echo " !!!!!! Binary File Found ==> $binaryRpm !!!!!! "
fi
done < "$FILENAME"