1

Linux File System

У меня есть каталог с 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

3 ответа3

2

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

для меня в $(кошка test.csv)

делать

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

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

если [-d $ dir1]

затем

если [-d $ dir2]

затем

echo $ dir2 присутствует, пропуская движение от $ dir1 к $ dir2

еще

mv $ dir1 $ dir2

фи

фи

сделанный

0

Итак, я пользователь Linux, Unix и Mac и пишу сценарии Perl и Bash. Если у вас есть Power Shell или Cygwin, вы можете сделать следующее, Windows может иметь это тоже, но не затаить дыхание:

Не делая всего этого, я думаю, что вы должны быть в состоянии принять это и мод, как вы хотите ...

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

bash> для temp_line в cat somefile.csv

делать

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

готово> somefile.sh

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

Баш>. ./somefile.sh

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

bash> if [-d 'dir_name']; тогда ...; фи

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

0

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

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

          Old name            New unique ID
To_be,_or_not_to_be,                1
that_is_the_question.               2
The_quick_brown_fox                 3
jumps_over_the_lazy_dog.            4
             ⋮                     ⋮
Once_upon_a_midnight_dreary,       40
while_I_pondered,                  41
weak_and_weary,                    42
             ⋮                     ⋮
The_answer_to_the                  56
ultimate_question_of_life,         57
the_universe,_and_everything_is    58
42                                 59
And_so_on...                       60

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .