Ste*_*ine 37 command-line directory find rename
从目录及其所有子目录中移动文件类型的好方法是什么?
就像“将 /thisdir 中的所有 *.ogg 递归移动到 /somedir”。我尝试了几件事;我最大的努力是(仍然不是那么好):
find /thisdir -type f -name '*.ogg' -exec mv /somedir {} \;
Run Code Online (Sandbox Code Playgroud)
它在每个文件名之前的每一行返回,
mv: cannot overwrite non-directory `/thisdir/*.ogg' with directory `/somedir'
Run Code Online (Sandbox Code Playgroud)
Hem*_*ant 32
您可以为此使用带有xargs 的 find
find /thisdir -type f -name "*.ogg" -print0 | xargs -0 -Imysongs mv -i mysongs /somedir
上面命令中的 -I 告诉 xargs 你想使用什么替换字符串(否则它会将参数添加到命令的末尾)。
或
在您的命令中,只需尝试在mv
命令后移动“{}” 。
find /thisdir -type f -name '*.ogg' -exec mv -i {} /somedir \;
Gil*_*il' 16
在 zsh 或 bash 4 中,将所有*.ogg
文件收集到/somedir
:
mv /thisdir/**/*.ogg /somedir
Run Code Online (Sandbox Code Playgroud)
如果要重现目录层次结构:(警告,直接在浏览器中输入)
rsync -a --prune-empty-dirs --include='*/' --include='*.ogg' --exclude='*' /thisdir /somedir
Run Code Online (Sandbox Code Playgroud)
Cod*_*ict 14
find /thisdir -type f -name "*.ogg" -exec mv {} /somedir \;
Run Code Online (Sandbox Code Playgroud)
你有点交换了 mv 的参数
归档时间: |
|
查看次数: |
52299 次 |
最近记录: |