Quando você passa um argumento na linha de comando de cut
, além de opções, é um nome de arquivo para ler dados. Você está pedindo para o cut
processar dados do arquivo 131230_M01771_0032_000000000-A7874
, o que causa um erro porque é um diretório, não um arquivo contendo dados.
Em vez de chamar um utilitário externo, você pode usar o conjunto interno do shell Construções de expansão de parâmetro .
dir="131230_M01771_0032_000000000-A7874"
third_field="${dir#*_}"; third_field="${third_field#*_}"; third_field="${third_field%%_*}"
echo "$third_field"