1

Мне было интересно, что будет самым кратким способом сортировки файлов по дате, а затем копировать все остальные в новую папку.

Моя проблема: у меня есть файлы, переименованные так, что они называются

file1 (101)
file2 (103)
file3 (110)
.
.
.

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

1 ответ1

1

Следующий скрипт кажется хорошим, но он будет работать, только если у вас есть "хорошо себя ведущие" имена файлов [ 1 ]:

#!/bin/bash
foo=0
for f in $(ls -rt) ; do 
  if [ $((foo%2)) -eq 0 ];
    then
       echo "even " "$f";  // maybe here copy
    else
       echo "odd" "$f" ;   // maybe here skip
  fi
  let foo++
done

Так что, по сути, нет ни новой строки, ни табуляции, ни пробелов... как кажется в вашем случае
Помните, что всегда небезопасно анализировать вывод команды ls [ 1 ] и doublecheck.

Если вы не находитесь в безопасной зоне, в которой вы можете использовать ls, вы можете найти решение с помощью find , возможно, черпая вдохновение из ответа Жиля [ 2 ].


Ps> В случае повреждения данных, даже в таком легком случае, как ваш, всегда нужно было проверять исправность патча. Часто удобнее начинать заново с самого начала. Если, как я полагаю, размер данных огромен, и вы не можете перенести / загрузить его снова, всегда можно сделать некоторую проверку (например, md5sum [ 3 ]) на исходные данные и исправленные.

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