Command-Line
如何按類型遞歸地將文件從目錄及其子目錄移動到另一個目錄?
從目錄及其所有子目錄中移動文件類型的好方法是什麼?
就像“遞歸地將 /thisdir 中的所有 *.ogg 移動到 /somedir”。我嘗試了幾件事;我最大的努力是(仍然不是那麼好):
find /thisdir -type f -name '*.ogg' -exec mv /somedir {} \;
它在每個文件名之前的每一行返回,
mv: cannot overwrite non-directory `/thisdir/*.ogg' with directory `/somedir'
您可以為此使用 find 和xargs
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 \;
*.ogg
在 zsh 或 bash 4 中,將所有文件收集到/somedir
:mv /thisdir/**/*.ogg /somedir
如果您想重現目錄層次結構:(警告,直接在瀏覽器中輸入)
rsync -a --prune-empty-dirs --include='*/' --include='*.ogg' --exclude='*' /thisdir /somedir