Przykładowa struktura katalogów:
$ ls -1 test
a
b.uploaded
c.uploaded
d.uploaded
e
Z find
, nadaje się do przesłania do innego polecenia za pomocą xargs
:
$ EXT='.uploaded'; find dir -maxdepth 1 -name "*$EXT" -exec basename {} "$EXT" \;
d
b
c
W skrypcie powłoki, używając basename
do usunięcia katalogu i sufiksu:
$ EXT=".uploaded"; for i in dir/*"$EXT"; do basename -- "$i" "$EXT"; done
b
c
d
W skrypcie powłoki, używając rozszerzenia parametrów:
$ EXT=".uploaded"; for i in dir/*"$EXT"; do i=${i##*/}; printf '%s\n' "${i%$EXT}"; done
b
c
d
Pamiętaj, że możesz trafić kilka plików. Nie zdefiniowałeś, co ma się stać po pliku. Jeśli masz pewność , że pasuje tylko jeden plik, możesz użyć basename
bezpośrednio:
$ rm dir/{b,d}.uploaded
$ basename dir/*.uploaded .uploaded
c
ale to się nie powiedzie, jeśli glob pasuje do wielu plików.