#csh
#csh
Вопрос:
Я пытаюсь создать скрипт, который будет определять местоположения и типы файлов на основе их пути к файлу. Например, если у меня есть местоположение /home/file/txt/test.txt и /home/file/tcl/test.tcl . Я хочу создать переменные для третьего / местоположения. Итак, в примере это будут txt и tcl. Таким образом, у меня будет список местоположений, которые соответствуют этому формату. Я хочу выполнить предварительный просмотр списка, а затем установить переменную в третье / местоположение. Затем я выведу эту переменную. Какое регулярное выражение было бы правильным для этого?
Ответ №1:
Ваша задача довольно расплывчата. Всегда полезно размещать желаемые входные и выходные данные. В любом случае, вот некоторый запуск для вашей задачи, если я хорошо понял вашу спецификацию:
#!/bin/env csh
set dir='./file/'
set types=('tcl' 'txt')
foreach type (${types})
#HERE replace with Your commands
#example find with regex
echo " ... searching for *.${type} in ${dir}${type}/"
find "${dir}${type}/" -type f -regex '.*.'"${type}"'$' -print0 | xargs -0 printf "%sn"
end
exit 0
Есть настройка dir
где искать и ваш массив types
. Каждый цикл проходит через каталог / тип и находит файлы с суффиксом типа с помощью регулярного выражения. xargs
здесь необязательно, и я размещаю его специально, чтобы показать, как правильно обрабатывать файлы. Вы можете заменить, например, на:
xargs -0 -I {} cp {} /home/newdestination/
Например, если вам нужно скопировать в новое место назначения.
Тест:
% ./list_file.csh
... searching for *.tcl in ./file/tcl/
./file/tcl/a.tcl
./file/tcl/b.tcl
... searching for *.txt in ./file/txt/
./file/txt/a.txt
./file/txt/b.txt