Я предполагаю, что Вы хотите переименовать файл, а также переместить его.
Используя мой исходный сценарий как основа, измените эту часть сценария:
if [ "$NumFolders" -eq 1 ] ; then
mv "$ParentFolder/$FileToMove" "$TargetFolder/"
else
к чему-то вроде этого:
if [ "$NumFolders" -eq 1 ] ; then
NewFileName=$(echo "$FileToMove" | sed -E -e 's/_zz[0-9]+\././')
mv "$ParentFolder/$FileToMove" "$TargetFolder/$NewFileName"
else
Переводя regex в подробный английский язык, sed сценарий здесь заменяет "первое вхождение во входной строке '_zz сопровождаемый одной или несколькими цифрами, сопровождаемыми литеральной точкой'" только с точкой.
т.е. как ответ Ben это не сделает правильной вещи с файлом, который имеет два или больше '_zz20...' последовательности в нем. Достаточно легкий заменить его regexp Birei (кроме избавляются от слова 'пустой указатель' между \1 и \2, это заменит его литеральной строкой 'пустой указатель'):
NewFileName=$(echo "$FileToMove" | sed -E -e 's/^(.*)zz[0-9]+(\.pdf)$/\1\2/')
BTW, это, возможно, было сделано с одной строкой и без временной переменной ($NewFileName), но легче понять этот путь.
Строка с одним [116415]. [116416] в последнем столбце будет содержать информацию о самом каталоге, т.е. [116417]/[116418]:
drwxr-xr-x 26 корневой 4096 мар 10 15:57 .
Однако, если вам нужна информация только о самом [116421]/[116422], то ответ [116423]terdon[116424] (с помощью переключателя [116425]-d[116426]), вероятно, будет более удобным.[115956].