如何将未打开的文件移动到另一个文件夹


0

我是Linux的初学者,我想在bash中构建一个脚本来检查哪些文件在文件夹中打开并移动任何其他文件 - 那些未打开到另一个文件夹的文件。


1
您认为系统如何知道文件已被打开?这只能通过使用在用户访问文件时更新某些元数据的应用程序来实现。
Julian Knight

1
那个lsof怎么样?
Petr

1
检查实际打开的内容。您的问题并未暗示这一点。措辞暗示你想要检查已打开/未打开的内容,而不是当前打开/未打开的内容,这完全是另一回事。
Julian Knight

正确的,我想检查一下实际上是什么 - 我不是母语为英语的人。
Petr

我冒昧地澄清措辞。
Julian Knight

Answers:


0

想不出一个完全优雅的方式来做到这一点。我希望如此 find 会有一些设施。这会让这很容易。但是我没有找到将文件识别为打开的选项,所以我选择制作一个小脚本来降低逻辑。

#!/bin/sh
DIR=/some/files
NEW_DIR=/some/new/files
OPEN_FILES=$(lsof -Fn $DIR/* | grep ^n | cut -c2- | sort -u)
for file in $DIR/*; do
    if echo "$OPEN_FILES" | grep -q $file; then
        echo "$file is opened - not moving"
        continue
    fi
    mv $file $NEW_DIR/
    echo "$file moved"
done

老实说,这很粗鲁,但希望它是你想要的基础,你可以根据需要进行更多修改。如果有人知道如何做到这一点 find,请加入。 find-exec mv 选项对于这样的东西真的很好。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.