Удалить разделы из списка имен файлов, сохраняя уникальный идентификатор, следующий за удаленным разделом, используя команду Bash - PullRequest
0 голосов
/ 29 апреля 2020

Заранее спасибо этому исключительному сообществу. Пожалуйста, помогите с моим первым постом когда-либо! Я пытался написать команду для удаления разделов имен файлов, но не могу понять, как это сделать, поддерживая уникальный идентификатор, который следует за областью, которую я хочу удалить.

Вот примеры исходных имен файлов (у меня есть папка, полная таких):

101 OD_1_20x_L Rho GFP__01.vsi - macro image - C=0.tif
101 OD_1_20x_L Rho GFP__01.vsi - macro image - C=1.tif
101 OD_1_20x_L Rho GFP__01.vsi - macro image - C=2.tif
101 OD_1_20x_L Rho GFP__02.vsi - C=0.tif
101 OD_1_20x_L Rho GFP__02.vsi - C=1.tif
101 OD_1_20x_L Rho GFP__02.vsi - C=2.tif

И желаемый результат:

101 OD_1_20x_L Rho GFP__01- C=0.tif
101 OD_1_20x_L Rho GFP__01- C=1.tif
101 OD_1_20x_L Rho GFP__01- C=2.tif
101 OD_1_20x_L Rho GFP__02- C=0.tif
101 OD_1_20x_L Rho GFP__02- C=1.tif
101 OD_1_20x_L Rho GFP__02- C=2.tif

Я использовал варианты на следующем, но не нашли способ сохранить уникальный C = #. tif в конце каждого файла.

for f in ./*; do mv "$f" "$f%.vsi*C=*.tif}.tif" ; done 
for f in ./*; do mv "$f" "${f%.vsi*}C=*.tif" ; done

1 Ответ

0 голосов
/ 29 апреля 2020

Сделайте два разделения, удалив последнюю разделенную пробелами строку, а затем удалите .vsi part

Примерно так:

for f in *.tif; do
    echo mv -v -- "$f" "${f%.vsi*} - ${f##* }"
done

Удалите echo, если вы считаете, что вывод правильно.

Это вывод без echo

renamed '101 OD_1_20x_L Rho GFP__01.vsi - macro image - C=0.tif' -> '101 OD_1_20x_L Rho GFP__01 - C=0.tif'
renamed '101 OD_1_20x_L Rho GFP__01.vsi - macro image - C=1.tif' -> '101 OD_1_20x_L Rho GFP__01 - C=1.tif'
renamed '101 OD_1_20x_L Rho GFP__01.vsi - macro image - C=2.tif' -> '101 OD_1_20x_L Rho GFP__01 - C=2.tif'
renamed '101 OD_1_20x_L Rho GFP__02.vsi - C=0.tif' -> '101 OD_1_20x_L Rho GFP__02 - C=0.tif'
renamed '101 OD_1_20x_L Rho GFP__02.vsi - C=1.tif' -> '101 OD_1_20x_L Rho GFP__02 - C=1.tif'
renamed '101 OD_1_20x_L Rho GFP__02.vsi - C=2.tif' -> '101 OD_1_20x_L Rho GFP__02 - C=2.tif'
...