Files

如何逐個文件移動目錄?(而不是“複製然後刪除”)

  • May 16, 2013

我的電腦有一個 500GB 的驅動器。

我想將 400GB 的數據/unencrypted/encrypted.

兩個目錄都在同一個分區上,但/encryptedecryptfs處理,因此mv /uncrypted/* /encrypted

  1. 將所有文件複製到目標
  2. 然後從源中刪除它們

…我買不起,因為它需要 800GB。

如果文件一個接一個地移動,就沒有問題(ecryptfs 區域是動態的)。

是否有mv選項或其他工具可以逐個文件移動目錄?

有大量文件,因此 ARG_MAX 可能是基於腳本的解決方案的問題。

如果您有rsync(刪除--dry-run以真正做到):

rsync --dry-run --remove-source-files -avHAX /unencrypted/ /encrypted

否則,使用 bash4+ 和 GNU stat:

#!/bin/bash

set -e

shopt -s nullglob globstar

for from in /unencrypted/**/*; do
   to="${from/\/un//}"
   if [[ -d "$from" ]]; then
       echo mkdir -p "$to"
       echo chmod "$(stat -c %a "$from")" "$to"
       echo chown "$(stat -c %u:%g "$from")" "$to"
   else
       echo cp -a "$from" "$to" && echo rm "$from"
   fi
done

echo rm -r /unencrypted

要真正執行它,請echo從每個命令中刪除。

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