Переименовать папку с помощью скрипта, переменные из документа Excel

Переименовать папку с помощью скрипта, переменные из документа Excel

Файловая система Linux

У меня есть каталог с 1500 папками. Я хочу использовать документ Excel, в котором в одном столбце есть 1500 имен папок, а в другом — уникальный идентификатор. Я хочу написать скрипт, который переименовывал бы папки в соответствии с новым уникальным идентификатором. Может ли кто-нибудь мне помочь? Кажется, это очень просто, хотя я не знаю, как писать скрипты. Может ли кто-нибудь дать ссылку на скрипт в сети (я не смог его найти).

Look at volume A for folder Var#1 (from excel)

if present on Volume A then mv Var#1 to Var#2 (from excel)

loop and grab next line of excel doc

решение1

Хорошо, вот оно:

для i в $(cat test.csv)

делать

dir1=$(echo $i|sed 's/,.*//')

dir2=$(echo $i|sed 's/.*,//')

если [ -d $dir1]

затем

если [ -d $dir2 ]

затем

echo $dir2 присутствует, пропускаем перемещение из $dir1 в $dir2

еще

мв $dir1 $dir2

фи

фи

сделанный

решение2

Итак, я пользователь linux, unix и mac и пишу скрипты perl и bash. Если у вас есть power shell или cygwin, вы можете сделать следующее, в Windows это тоже может быть, но не ждите:

Я думаю, что даже не делая всего этого, вы сможете взять это и модифицировать так, как вам хочется...

  • Сохраните ваши данные в CSV-файл (somefile.csv)
  • В оболочке bash

bash> для temp_line вcat somefile.csv

делать

echo mv $temp_line |sed 's/,/ /'

сделано >somefile.sh

Не запускайте следующую строку, пока не будете уверены, что она сделает то, что вам нужно!

bash>. ./somefile.sh

Вот и все... Обратите внимание, это быстрый хак, его можно написать с большей проверкой ошибок и прочим, и это было навскидку:) Другая проблема, с которой вы можете столкнуться, это пробелы в именах файлов/каталогов, просто добавьте кавычки. Если вам нужно проверить, существует ли каталог, вы можете добавить оператор if, например, такой:

bash>если [ -d 'dir_name' ]; тогда ... ;fi

Этого должно быть достаточно, чтобы не писать об этом. Я могу вдохновиться позже и написать об этом в следующем посте.

решение3

Этоне ответ, но я ввожу его как таковой, потому что комментарии не позволяют нормального форматирования или такого количества текста.

Очевидно, что имена существующих папок уникальны (предполагая, что они либо все находятся в одной суперпапке, либо представлены как полные пути — как указал @nerdwaller). И уникальные идентификаторы во втором столбце по определению уникальны. Являются ли два столбца уникальными (неперекрывающимися)? Рассмотрим следующие данные:

          Старое имя Новый уникальный идентификатор
Быть_или_не_быть, 1
вот_какой_вопрос. 2
Быстрая_коричневая_лиса 3
прыгает_через_ленивую_собаку. 4
             ⋮ ⋮
Однажды_в_полночь_тоскливо, 40
пока_я_размышлял, 41
слабый_и_усталый, 42
             ⋮ ⋮
Ответ_на_вопрос_56
главный_вопрос_жизни, 57
вселенная, и_все_все_есть 58
42 59
И_так_на... 60

Если/когда вы попытаетесь переименовать weak_and_weary,в 42, вы столкнетесь с существующей 42папкой. Вероятно, лучшим способом решения этой проблемы будет проверка старых имен папок на наличие имен, соответствующих шаблону уникальных идентификаторов, и ручная обработка.

Связанный контент