Как выяснить, используется ли файл / вызывается другим? - PullRequest
2 голосов
/ 24 мая 2011

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

В основной папке много подпапок, и в каждой подпапке есть много файлов .js .cs и .php - около 1000 файлов.Но около 300 не используются.Мне нужно открыть каждую из подпапок и посмотреть, используются ли какие-либо из этих файлов / вызываются другими файлами.Если это не так, мне нужно сохранить местоположение неиспользуемого файла в текстовом файле.

Я провел некоторое исследование и обнаружил, что команда grep -r filename * делает именно это, но в командной строке Iне могу понять, как пройтись по папкам и изменить имя файла в зависимости от содержимого внутри папок.Рабочая станция у меня в Windows с установленным Cygwin.

Ответы [ 4 ]

1 голос
/ 24 мая 2011

Разве это не требует двойной петли?(Большой О 2 ).Вы должны искать каждый файл для каждого экземпляра файла в нем.

Я бы использовал Perl вместо Awk или BASH (хотя это можно сделать в BASH).* Я пытаюсь найти только базовое имя файла, а не полное имя.Теоретически, я должен искать как его полное имя в корне, так и его имя по отношению к самому файлу.Тем не менее, я слишком ленив, чтобы сделать это прямо сейчас.Скорее всего, вам не нужно об этом беспокоиться.

1 голос
/ 24 мая 2011
echo file,count >results.csv
for f in $(find . -name *.js -o -name *.cs -o -name *.php)
do
    echo $f,$(grep -cr $(basename $f) *) >> results.csv
done

это даст вам CSV-файл, подобный этому, с количеством ссылок на каждый файл.

file,count
file1,3
file2,1
file3,0

отредактирован для удаления пути к файлу перед grepping

0 голосов
/ 24 мая 2011

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

for file in $(find -type f -name \*.extension); do
    grep -Rl $file /in/path
done > /tmp/myfiles
0 голосов
/ 24 мая 2011

фу, хитрый. По крайней мере, если вы должны принять во внимание бит «используется».

В случае .cs вы можете использовать операторы импорта, которые не позволят вам легко определить, используется ли файл. Импорт может работать на уровне пакета, если я не ошибаюсь (будучи скорее Java-парнем ...).

И я предполагаю, что это ухудшается для файлов JavaScript и php.

Может быть, вы должны спросить, почему этот отчет ценен в первую очередь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...