Поиск самой старой папки в каталоге в linux, даже если файлы внутри изменены - PullRequest
4 голосов
/ 31 октября 2019

У меня есть две папки A и B, внутри которых есть по два файла в каждой. которые создаются в следующем порядке

mkdir A 
cd A
touch a_1
touch a_2
cd ..
mkdir B
cd B
touch b_1
touch b_2
cd ..

Исходя из вышеизложенного, мне нужно найти, какая папка была создана первой (не изменена).

ls -c  <path_to_root_before_A_and_B> | tail -1

Теперь выводится как «A» (нет проблем здесь). Теперь я удаляю файл a_1 внутри Директории A. Теперь я снова выполняю команду

ls -c  <path_to_root_before_A_and_B> | tail -1

. На этот раз она показывает «B».

Но в директории A содержится файл a_2, нокоманда ls отображается как «B». как это преодолеть

Ответы [ 2 ]

0 голосов
/ 31 октября 2019

Предполагая, что все звезды совпадают (вы используете версию GNU stat(1), которая поддерживает форматы времени рождения файлов, вы используете файловую систему, которая их записывает, и версию ядра Linuxдостаточно новый для поддержки системного вызова statx(2), этот сценарий должен распечатать все непосредственные подкаталоги каталога, переданного в качестве аргумента, отсортированного по времени создания:

#!/bin/sh
rootdir=$1
find "$rootdir" -maxdepth 1 -type d -exec stat -c "%W %n" {} + | tail -n +2 \
 | sort -k1,1n | cut --complement -d' ' -f1
0 голосов
/ 31 октября 2019

Как получить дату создания файла Время в Bash-Debian

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

Вместо этого попробуйте прикоснуться к файлу сразу после создания каталога, сохраните его как что-то вроде .DIRBIRTH и сделайте его скрытым. Затем при попытке найти порядок создания каталогов, просто grep, для которого .DIRBIRTH имеет самую старую дату модификации.

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