当我在Mac上使用fswatch监视特定文件夹时,无论是添加还是删除文件,我都会得到文件重命名的通知。

4

我正在通过命令行监控Mac OS中的特定文件夹。

 fswatch -x /Users/syammala/folder

/Users/syammala/folder/posixGroup.xml 重命名为 IsFile

每当我添加或删除文件时,总是会得到“重命名为文件”的提示。我想区分这两个操作,即添加和删除文件。


fswatch是什么?它不是内置于OS X的命令。你可以问提供它的人。无论如何,这不是关于编程或开发工具的问题,因此不适合在StackOverflow上提问。 - Ken Thomases
fswatch是一个跨平台的监视器,它在MAC OSX中使用FSevents。据我所知,当我们在命令行中输入此命令时,它会显示发生在特定文件夹位置上的事件。但是对于添加和删除,我得到了相同的消息。我想知道是否可以进行任何编程更改以获取实际执行的操作。 - MacDeveloper
你想修改 fswatch 的代码吗?那么你需要展示它当前使用的代码,并提出一些具体的问题。 - Ken Thomases
我在哪里可以获取 fswatch 代码以进行修改?如果有人能建议一下,这是否属于编程问题?请帮助我解决这个问题。 - MacDeveloper
2
我知道这已经晚了四年,@Dutt,但是fswatch在GitHub上可用,采用GPL许可证。下载并尽情修改吧。https://github.com/emcrisostomo/fswatch - Jason Conrad
1个回答

4
更新的答案 由于您现在澄清了您是使用Finder移动和删除文件,这使得事情变得更加复杂,因为当您使用Finder时,它会与垃圾桶交互,而不像使用终端和Unix命令时那样。因此,当您在Finder中删除文件时,它会将文件重命名为存储在$HOME/.Trash中的垃圾桶。
因此,您需要监视垃圾桶以及您计划监视的任何地方,如下所示:
fswatch -x FolderA $HOME/.Trash

然后你将看到正在发生的一切。或者,禁用垃圾箱-我很欣赏这可能不可接受,但您没有提供太多关于您的环境的详细信息,所以我不知道。要禁用垃圾箱,请删除$ HOME / .Trash目录及其所有内容,然后创建一个名为$ HOME / .Trash的文件,以便OSX无法在那里重新创建其心爱的垃圾箱。如果您不理解,请不要这样做!
cd
rm -rf .Trash
touch .Trash

要重新启用垃圾桶,请执行以下操作:
cd
rm .Trash

英译中:

原始答案

您可以通过数字标志像这样完成它。

如果您这样做:

touch FreddyFrog
rm FreddyFrog

touch BozoBrains
mv BozoBrains SillyBilly
rm SillyBilly

你可以像这样进行监控。
fswatch -xn `pwd`
/Users/mark/tmp/FreddyFrog 514     # touch FreddyFrog
/Users/mark/tmp/FreddyFrog 520     # rm FreddyFrog

/Users/mark/tmp/BozoBrains 514     # touch BozoBrains
/Users/mark/tmp/BozoBrains 528     # mv BozoBrains SillyBilly
/Users/mark/tmp/SillyBilly 528     # mv BozoBrains SillyBilly
/Users/mark/tmp/SillyBilly 520     # rm SillyBilly

当我从命令行移动文件和从命令行删除文件时,我得到相同的528。而且当我将文件拖放到文件夹内部和外部时,我也会得到这个相同的528。我想要区分文件夹中的每个操作。 - MacDeveloper
如果您重复执行我展示的确切命令,您总是会得到528,而不是514或520?这正确吗?您使用的OSX版本是什么? - Mark Setchell
当我们创建触摸文件时,得到514,删除文件时得到520。我的意思是,对于拖放和删除,我们总是得到528。 - MacDeveloper
好的,我的猜测是当您执行GUI拖放操作时,它实际上会将文件移动到垃圾桶中,因此删除和重命名看起来相同。尝试暂时禁用该卷的垃圾桶以进行检查。 - Mark Setchell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接