Mam zestaw plików, w których chciałbym zastosować to samo polecenie, a dane wyjściowe powinny zawierać tę samą nazwę co przetwarzany plik, ale z innym rozszerzeniem.
Obecnie zmieniam nazwę /my/data/Andrew.doc na /my/data/Andrew.txt Chciałbym to zrobić dla wszystkich plików .doc z folderu / my / data / i zachować nazwę.
Próbowałem kilku wersji, ale wydaje mi się, że mam coś złego w składni, ponieważ jestem nowy w systemie Linux.
command-line
bash
Robert
źródło
źródło
Odpowiedzi:
Istnieje co najmniej sto tysięcy milionów różnych sposobów podejścia do tego, ale oto najlepsi pretendenci:
Bash for loop
Za pomocą
find
find
Komenda ma piękny małyexec
polecenie, które doskonale nadaje się do prowadzenia sprawy (z pewnymi zastrzeżeniami). Znajdź jest lepsze niż podstawowe globowanie, ponieważ naprawdę możesz odfiltrować wybrane pliki. Uważaj na nieparzystą składnię.Zauważ, że
find
jest rekurencyjny, więc możesz chcieć użyć go-maxdepth 1
do przechowywaniafind
w bieżącym katalogu roboczym.-type f
może być użyty do odfiltrowania zwykłych plików.Jeśli zmieniamy nazwę dokumentu na txt ...
rename
Polecenia sed-jak w poszukiwania. Oczywiście to nie zrobi nic, aby przekonwertować format.źródło
źródło