Как переместить файлы, которые не используются?

Я хочу переместить файлы в каталог, которые не используются в настоящее время. У меня есть смысл что некоторая комбинация lsof, find, и xargs мог работать, но я не могу вполне добраться там. До сих пор я создал следующую команду:

lsof mydir/*|awk '(NR>1){print $9}

Это дает мне список файлов, которые используются. Если я мог бы просто получить список файлов, которые не используются, то что-то как xargs могло проблема a mv на тех файлах. Я просто, может казаться, не нахожу изящный способ сделать это. У кого-либо есть какие-либо подсказки для меня?

1
задан 07.12.2010, 19:50

3 ответа

Благодаря предложению @Sorpigal я нашел простой способ сделать эту работу без циклов:

comm -2 -3 <(find $dir -maxdepth 1 -type f|sort) <(sudo lsof $dir/* | awk '(NR>1) {print $9}'|sort) | xargs -I {} mv {} $move_dir

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

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

Я сделал бы это этот путь.

find $dir -maxdepth 1 | sort > $other_dir/all_files
lsof $dir/* | awk '(NR>1) {print $9}' | sort > $other_dir/in_use_files
comm -2 -3 $other_dir/all_files $other_dir/in_use_files

От коммуникации (1):

NAME
       comm - compare two sorted files line by line

SYNOPSIS
       comm [OPTION]... FILE1 FILE2

    ...

       -2     suppress lines unique to FILE2

       -3     suppress lines that appear in both files

Теперь это - простой вопрос переформатирования в серию mv операторы. Возможно, как это:

while IFS= read file ; do
    mv "$file" "$destination/"
done < <(comm -2 -3 all_files in_use_files)

Или использование другого промежуточного файла, если Вы предпочитаете.

3
ответ дан 12.12.2019, 07:48

Возможно, не лучший способ, но можно просто кодировать его через несколько минут:

уже получите свой список открытых файлов (вид если не)

уже получите список всех файлов (вид если не)

разность два списка

xargs вообще

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

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

Теги

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