我想将所有*.txt文件从位于给定目录中的所有子目录移动到一个目标目录。
执行以下操作时,它会移动每个文件 - 如何将其减少到所有*.txt文件?
find -type f -print0|xargs -0r mv -it "/path to my folder/destination-directory"
Run Code Online (Sandbox Code Playgroud)
hee*_*ayl 11
在您的情况下,使用带有-name选项的glob 模式find来指示所需的模式*.txt:
find . -type f -name '*.txt' -exec mv -t /destination {} +
Run Code Online (Sandbox Code Playgroud)
当然,替换/destination为实际的目标目录。
笔记:
您不需要生成xargs和匿名管道,请使用谓词中的mv逻辑-execfind
find ... -exec处理所有可能的文件名ARG_MAX以及
GNU mv(Ubuntu 中的默认值)必须-t采用目标目录,以便您可以利用 的+参数-exec在单次运行中发送所有文件mv(或者如果ARG_MAX在进程中触发,则至少运行最少)
添加-name测试
find -type f -name "*.txt" -print0 |...
Run Code Online (Sandbox Code Playgroud)
不要忘记引用 glob 以防止 shell 扩展。
对于不区分大小写的搜索,使用-iname代替-name
| 归档时间: |
|
| 查看次数: |
3840 次 |
| 最近记录: |