在Unix中只删除我的文件

13

我需要从Unix目录中删除仅属于我的ID的文件。 我尝试构建此命令,但无效:

我需要删除Unix目录中只属于我的ID的文件。我尝试组合以下命令,但并没有成功:

ls -la | grep 'myid' | awk ' { print $9 } ' | rm

我的结果:用法:rm [-firRe] [--] 文件...

7个回答

18

你接近成功了,请尝试:

rm `ls -la | grep 'myid' | awk ' { print $9 } '`

请注意,这些是反引号,而不是单引号,用来包围原始流水线中的前三个段。对于我来说,文件名列是$8,但如果$9是正确的列,则应该可以。


非常感谢您的输入。很有效。这比其他答案少打一些字,但我也很感激那些答案。 - Gerry
这对我失败了,因为我的提示符是彩色的:rm: 无法删除`\033[0m.X1-lock\033[0m':没有那个文件或目录 - \033[0m来自环境变量(提示符)。 - Aaron
为了删除一个目录内的文件,您可以使用-r选项。(rm -r ls -la | grep 'myid' | awk ' { print $9 } ') - Arun George

16
find . -user myuser -print0 |xargs -0 rm

将您自己的用户ID(或可能是用户编号)替换为“myuser”。


13

rm不能从stdin读取内容。

find -user $(whoami) -delete

请务必先进行不删除的测试。


1
注意,如果您只想删除文件,请添加 -type f。 - Matthew Flaschen
1
还可以加上 -maxdepth 1 参数,只在当前目录中进行操作。 - millimoose
1
这是最简洁的方式,但请注意,在使用-user选项之前,您必须将目录放在命令中,例如'find . -user $(whoami) -delete'。 - Jay
1
你在GNU查找中不需要这样做。虽然你可能是对的,标准(http://www.opengroup.org/onlinepubs/009695399/utilities/find.html)要求这样做。 - Matthew Flaschen
啊,好的,知道了。既然这样那就算了 :-) - Jay

5

尝试使用 find 命令来查找属于某个用户的文件,然后将其删除:

find . -user *username* -delete 

更多信息请参考:man find

3
删除/tmp文件夹中user_name的文件,时间超过60天 - 您可以使用任何日期,但请确保在deleted.txt文件中保留证据,并将其保存在user_name主文件夹中。
find /tmp -user user_name -mtime +60 -exec rm -rfv {} \; >> /home/user_name/deleted.txt

3

rm命令不接受通过stdin传递的要删除的文件列表(这就是你通过管道传递的方式)。

尝试使用以下命令:

find . -type f -user username -exec rm -f {} \;

1
你可以使用find:
find . -maxdepth 1 -type f -user myid -print0 | xargs -0 rm -f 

如果您想处理子目录,请删除“-maxdepth 1”。

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