Пример структуры каталогов:
$ ls -1 test
a
b.uploaded
c.uploaded
d.uploaded
e
С помощью команды find
, подходящей для передачи другой команде через xargs
:
$ EXT='.uploaded'; find dir -maxdepth 1 -name "*$EXT" -exec basename {} "$EXT" \;
d
b
c
В сценарии оболочки, используя basename
для удаления каталога и суффикса:
$ EXT=".uploaded"; for i in dir/*"$EXT"; do basename -- "$i" "$EXT"; done
b
c
d
В сценарии оболочки, используя расширение параметров:
$ EXT=".uploaded"; for i in dir/*"$EXT"; do i=${i##*/}; printf '%s\n' "${i%$EXT}"; done
b
c
d
Обратите внимание, что вы можете нажать несколько файлов. Вы не определили, что вы хотите, чтобы произошло после файла. Если вы уверены, что есть только один файл, который будет соответствовать, вы можете использовать basename
напрямую:
$ rm dir/{b,d}.uploaded
$ basename dir/*.uploaded .uploaded
c
но это не удастся, если глобус совпадает с несколькими файлами.