所以,给定三个选项......
find .... -delete
find .... | xargs rm ...
find .... -exec rm ...;
..或其变体,哪个选项更可取?
我猜没有一成不变的答案,具体情况将决定最佳选择(请说出它们的名字!)
干杯。
我正在尝试查找直接位于当前目录内且早于特定年龄的所有目录。诀窍是,我只想考虑当前目录的直接后代的年龄,而不是递归搜索它们。
用法示例用于文件的每日备份 - 每天都会创建一个新目录,但放置在该目录中的文件保留其时间戳并且通常较旧。我希望能够在不删除更新快照中的旧文件的情况下清理旧备份。
看起来find
可能无法做到这一点,您推荐什么 unix 工具(或它们的组合)?
在测试有问题的 LUN 的读取错误时,我遇到了以下问题:
find /mnt/problem_lun/ -type f -print -exec dd if={} of=/dev/null bs=8k \;
...
/mnt/problem_lun/a_file
dd: writing `/dev/null': File too large
33619977+0 records in
33619976+0 records out
275414843392 bytes (275 GB) copied, 804.171 s, 342 MB/s
Run Code Online (Sandbox Code Playgroud)
IBM 硬件,RHEL 6.6
谁是罪魁祸首,前提是可以读取此特定文件而不会出现任何错误?
我不能说它适用于 Windows,但根据我的理解,这个正则表达式是正确的,以及我将如何编写它(也许^
开头除外)
来自http://www.velocityreviews.com/forums/showpost.php?p=382944&postcount=3
^.+\.((jpg)|(gif)|(exe))$
Run Code Online (Sandbox Code Playgroud)
当我跑
find -regex '^.+\.((jpg)|(gif)|(exe))$'
Run Code Online (Sandbox Code Playgroud)
我写的时候exe不显示
find -regex '^.+\.exe$'
Run Code Online (Sandbox Code Playgroud)
确实如此。为什么find -regex
不想使用()
或者(()|())?
我一直认为这对一切都有效。
一个测试不佳的程序在 NFS 共享上创建了一个包含大量文件的目录,我需要删除这些文件。
ls -ald /home/foo
drwxrwxr-x 2 503 503 317582336 Jul 29 11:38 /home/foo
Run Code Online (Sandbox Code Playgroud)
该目录位于 netapp 类型设备上大约 600GB 的 NFS 安装上。我实际上不知道其中有多少文件,但仅在 10 分钟后创建的类似目录就有 121,000 个文件,因此某处可能有数百万个文件。操作系统是 Linux 2.6 内核。
试图找到一种列出或删除它及其内容的方法。find /home/foo 导致 find 在大约 1 小时后死亡,除了“./”之外没有任何输出
目标是仅对在日期之后创建或修改的文件进行 rsync(或使用任何其他提供所需结果的工具)。它应该与包含空格(和/或其他需要转义的字符)的文件名一起使用。
我在 OS X 10.6.5 上成功地使用了这个命令:不过,
find . -newermt "2010-11-23 16:52:50" -type f -exec rsync -vuptn '{}' ../rsync_test/ ';'
我不认为-newermt
在 OS X 之外的其他操作系统上工作。
此命令的问题在于它为每个找到的文件运行一次 rsync,这似乎不是正确的方法。我试图;
用 a更改最后一个,+
以便它等待整个文件列表,但它会刹车(我确实尝试过"+"
,\+
以及其他逃脱方式)。
背景:我正在尝试在远程位置备份我的文件。这些文件有很多原始格式和其他格式的照片(照片有效。每天大约 30GB),由于上传带宽小(ADSL 很烂),虽然网络同步会花费无法使用的时间。因此,我们的想法是在远程位置拥有大量磁盘空间,并每周一次在小型外部硬盘驱动器上传输新/修改过的文件。然后可以轻松地使用 rsync 在远程位置添加新的/修改过的文件。为此,我需要在一周内在外部硬盘驱动器上同步新的/修改过的文件,因此我总是有每个文件的 2 个副本,要么在远程位置保存一周以上的文件,要么在外部硬盘驱动器上保存新的/修改过的文件自上次运输以来。
我打算让这个命令每 10 分钟 (cron) 运行一次,并使用它上次运行的日期和时间。
你能修复我的命令吗?或者您有更好的解决方案吗?
假设在给定的目录中我得到了
tzury@x200:~/Desktop/sandbox$ ls -l
total 20
drwxr-xr-x 2 tzury tzury 4096 2011-03-09 10:19 N00.P000
drwxr-xr-x 2 tzury tzury 4096 2011-03-09 10:19 N00.P001
drwxr-xr-x 2 tzury tzury 4096 2011-03-09 10:19 N00.P002
drwxr-xr-x 2 tzury tzury 4096 2011-03-09 10:19 N00.P003
drwxr-xr-x 2 tzury tzury 4096 2011-03-09 10:19 N00.P004
drwxr-xr-x 2 tzury tzury 4096 2011-03-09 10:19 N01.P000
drwxr-xr-x 2 tzury tzury 4096 2011-03-09 10:19 N01.P001
drwxr-xr-x 2 tzury tzury 4096 2011-03-09 10:19 N01.P002
Run Code Online (Sandbox Code Playgroud)
我寻求一种bash方法来获取其名称大于或小于给定参数的文件列表,例如:
$ my_finder lt N00.P003
Run Code Online (Sandbox Code Playgroud)
将返回N00.P000
, …
互联网上有很多关于此的内容,但大多数示例都是人为的。如何删除真正顽固的文件?例如,
$ find ./ -inum 167794
./àKÈÿÿÿÿ@
$ find ./ -inum 167794 -exec rm \"{}\" \;
rm: cannot lstat `"./\037\340\025K\021\004\310\377\377\377\377@\020\002"': Invalid or incomplete multibyte or wide character
Run Code Online (Sandbox Code Playgroud) 我正在整理一个需要知道 libmysqlclient.so.[15|16|18] .so 文件的脚本。它通常位于 /usr/lib/ 、 /usr/lib64/ 或上述目录的 mysql/ 子目录中。
我已经尝试了几件事。首先,有时可以在 /etc/ld.so.conf.d/mysql* 中的 mysql 文件中找到该位置,但在许多服务器上并非如此。
另一种可能性是在上述目录中搜索这些文件。我会知道正在使用哪个版本的 MySQL,所以我可以搜索正确的 .so 文件,但不幸的是,很多人似乎安装了多个 .so 文件。例如两者都可能存在:
/usr/lib/libmysqlclient.so.15
/usr/lib64/libmysqlclient.so.15
在这种情况下,我不确定正在使用哪个 .so 文件。
有没有办法告诉正确的 libmysqlclient.so 安装在哪里?