假设 - 如果我想将几个独立目录中的文件名中包含“heavengames”一词的每个 HTML 文件(作为第二个问题,正文中包含“heavengames”一词的每个 HTML 文件)移动到名为的新目录,该怎么办? “天堂游戏线程”?
答案1
要移动名称中包含该单词的文件:
find /path/to/dir1 /path/to/dir2 /and/so/on -type f -iname "*heavengames*" \
-exec mv -t /path/to/heavengames-threads {} \+
要移动正文中包含 word 的文件:
find /path/to/dir1 /path/to/dir2 /and/so/on -type f -exec grep -q heavengames {} \; \
-exec mv -t /path/to/heavengames-threads {} \+
附注要检查一切是否正确,请在第一次运行时添加echo
before 。mv
答案2
在 zsh 或 bash ≥4 中,根据文件名:
mkdir heavengames-threads
mv **/*heavengames*.html heavengames-threads/
为了获得更大的灵活性(例如,要重新创建目录层次结构,请查找zmv
(有这个网站上有很多例子)。
用于grep
搜索文件内容。使用最新版本的 GNU 实用程序(即在非嵌入式 Linux 或 Cygwin 上):
grep -RZ heavengames . | xargs -0 mv -t heavengames-threads/
对于更便携的命令,请使用find
.看拉什的回答。