Лучший способ вручную отсортировать случайные текстовые файлы?

У меня есть приблизительно 1 000 текстовых файлов, и я должен просмотреть каждого и переместить его в папку, если это - корректное. Я могу только сделать основную сортировку по длине/размеру, и я не могу grep, потому что текст случаен. Как я могу сделать это помимо ручного открытия + сохраняющий каждого в gedit. Я нахожусь на Ubuntu Linux.Спасибо

Я уже сделал всю сортировку, я могу на основе размера, wordcount, властей, даты, и т.д. Это - то, что перенесено. Я пытаюсь найти простой способ просмотреть +save/ignore остальные.

1
задан 28.09.2014, 19:19

6 ответов

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

$ vim *

откроет все файлы;

:!mkdir mine/; mkdir notmine/

создаст каталоги, названные "моим" и "notmine";

:!mv % mine/

переместит текущий файл в каталог, названный "моим";

:bdel

отбросит тот файл от тех, что энергия имеет дело с, и переместитесь в следующее;

:!mv % notmine/

переместит текущий файл в каталог, названный "notmine". То, что продолжает эти, перемещение управляет,

  • : переходит к режиму Командной строки
  • ! запускает команду оболочки
  • % энергия причин для замены от имени текущего файла. Если какие-либо из имен файлов будут иметь пробелы в них, то Вам будет нужно к двойной кавычке % аргумент, например, :!mv "%" mine/.

Хит :, затем b, затем стрелка вверх для получения :bdel управляйте снова.

Хит :, затем !mv, затем стрелка вверх неоднократно для циклического повторения через предыдущее !mv ... команды. Можно также просто ввести :! и затем стрелка вверх, но это доберется !mkdir... команда также.

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


Кроме того, на всякий случай то, что Вы делаете это без любого предыдущего опыта с энергией, я должен сначала рекомендовать Вас для того, чтобы сделать такой смелый шаг и затем продолжить сообщать Вам, что в какой-либо точке при случайном нажатии клавиши на клавиатуре и Вы начинаете на самом деле вводить материал в файл, или вещи иначе неожиданно работают, совершают нападки <ESC> пару раз, и затем u для отмены любых изменений, Вы сделали случайно. Если Вы заходите слишком далеко назад (не действительно проблема для этого примера, так как Вы на самом деле не собираетесь быть изменением никаких файлов), Вы совершаете нападки <CTRL>-R для Восстановления материала, Вы просто Отменили. <ESC> выведет Вам из режима Режим вставки или Visual, назад в режим Normal, который является, где все эти команды на самом деле работают.


Хорошо.. после того небольшого PSA, назад к нашему регулярно запланированному программированию.

Для создания файла, обрабатывающего более эффективный, можно настроить несколько макросов:

qm:!mv % mine/<CR>:bdel<CR>q

Это будет на самом деле иметь эффект перемещения текущего файла и отбрасывания его из "буферного списка энергии", поэтому удостоверьтесь, что это - одно ваше при установке этого макроса. Отметьте это <CR> здесь указывает, что Вы поражаете клавишу ENTER в той точке; на самом деле не вводить <CR>.

qn:!mv % notmine/<CR>:bdel<CR>q

То же соглашение здесь.

Затем для перемещения файла в каталог "шахты" и движение в буферном списке Вы делаете

@m

Или если это не Ваше

@n

На самом деле могло бы быть более мудро отобразить их макросы на буквы, которые находятся далее независимо на клавиатуре, чем m и n.. но это - основная идея.

5
ответ дан 12.12.2019, 07:42

Поскольку Mark сказал, что необходимо будет быть более конкретны относительно файлов. Вместо gedit можно использовать less пейджер или head/tail просмотреть части файла, затем mv утилита для перемещения его. Это должно сделать процесс немного быстрее.

Для программного подхода, в зависимости от размера файла и если это соответствовало бы на одном экране, Вы могли бы сделать что-то с этой логикой:

for each file in the directory
       print it's contents to the screen
       prompt for yes/no
       if yes
             move file to other directory
       else
             leave file alone

таким образом, по существу Ваша программа показала бы Вам содержание каждого файла, и если Вы хотели перемещенный, нажать Y, еще нажмите N. Тем путем каждый файл может быть обработан в 1 или 2 нажатиях клавиш, в зависимости от того, как Вы пишете это.

2
ответ дан 12.12.2019, 07:42

Я скучал:

$ cat disposition
#!/bin/sh

# pick your preferred viewer
VIEWER=less
VIEWER=head

# the log file will actually be a script that undoes all the
# changes made, so it is more like an inverted log
log=/tmp/disposition.$$

prog=$0
dest=$1

case $# in
    0|1) echo "usage $prog dest_dir file ..."
         echo "  presents files and asks for a disposition"
         echo "  if disposition is 'yes' move it to dir"
         echo "  otherwise do nothing"
         exit 1;;
esac
# some shells may have limits on command lengths so for many files
# you might have to:
#    disposition dest_dir a*
#    disposition dest_dir b*
#    etc.

if [ ! -d $dest ] ; then
    echo "$prog: destination $dest is not a directory"
    exit 1
fi

cat > $log <<EOF
#!/bin/sh
# inverted log file created by $prog
#

EOF

shift           # toss away dest_dir from args
for file; do    # in "$@" is implied
    if (echo "===== $file =====" ; cat $file ) | $VIEWER; then
        read -p "move $file to $dest? " move
        case $move in
            [yY]*)
                echo mv \"$dest/$file\" \"$file\" >> $log
                mv "$file" "$dest/$file"
                ;;
        esac
    fi
done

echo "$prog: inverted log script can be found in $log"
2
ответ дан 12.12.2019, 07:42

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

И конечно, запишите сценарий удара =)

с программированием фона я думаю, что это практическое руководство было бы вполне достаточно для программирования такого сценария http://tldp.org/LDP/abs/html/internal.html

(и я достаточно ленив для не записи одного),

1
ответ дан 12.12.2019, 07:42

Я задавался вопросом, могли ли наивные байесовские классификаторы применяться к коду и нашли Преподобного DivMod. То, что ударило меня, было строкой:

* is your code more like Guido's or Peter's 

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

1
ответ дан 12.12.2019, 07:42

Вы могли быть более конкретны относительно того, почему grep не удовлетворит Ваши потребности? Если нет никакого заметного "метода к безумию", затем вручную единственный путь. Вы не можете automatically/programatically вещи вида, при отсутствии условий, которые можно дать для сортировки.

0
ответ дан 12.12.2019, 07:42

Теги

Похожие вопросы