Command-Line

如何按類型遞歸地將文件從目錄及其子目錄移動到另一個目錄?

  • July 1, 2021

從目錄及其所有子目錄中移動文件類型的好方法是什麼?

就像“遞歸地將 /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

引用自:https://unix.stackexchange.com/questions/1555