Если мы предположим, что все ваши файлы находятся в форме в вашем вопросе ...
$ ls -l
total 2
-rw-r--r-- 1 ghoti wheel 0 Jan 3 13:20 f1
-rw-r--r-- 1 ghoti wheel 0 Jan 3 13:20 f2
-rw-r--r-- 1 ghoti wheel 0 Jan 3 13:20 f3
-rw-r--r-- 1 ghoti wheel 0 Jan 3 13:20 f4
то вы на правый трек с петлей for
. Но вы, вероятно, хотите сузить свой поиск только теми файлами, которые важны для вас.
В bash вы можете использовать extglob
для управления этим делом. Например:
#!/usr/bin/env bash
shopt -s extglob
for file in +([a-z])+([0-9]); do
echo "Old: $file/New: file${file##[a-z]}"
done
Это соответствует любым файлам, имена которых состоят из букв, сопровождаемых цифрами.
Если, с другой стороны, вы хотите сделать этот перенос, чтобы он работал в оболочке POSIX (поскольку в вашем вопросе вы указали /bin/sh
), вы можете поместить обнаружение в сам цикл:
#!/bin/sh
for file in *; do
if ! expr "$file" : '[a-z][a-z]*[0-9][0-9]*$' >/dev/null; then
continue
fi
echo "Old: $file/New: file${file##[a-z]}"
done
В обоих этих примерах мы используем POSIX «Расширение параметров» для удаления букв в начале имени файла.
Вы можете показать, что вы пробовали до сих пор? (Код) – DZDomi
Я начинаю alogirithm: #/бен/ш # Fichier "Liste" для элемента * сделать \t эхо "$ элемент" СЭД -n '/ Col3/р'! $ element> Quest $ element done Это далеко не правильное, но я немного боюсь –
Это не скрипт bash. Он запускается с помощью '/ bin/sh', поэтому даже если это bash, он запускается в режиме совместимости с POSIX. Вы хотите сделать это с помощью Bash-специфического способа, или вы после портативного решения, которое будет работать и в других оболочках, как показывает ваш пример? – ghoti