找屬於某用戶的檔案

  1. 先找出系統中屬於用戶 deyu8 的檔案,輸出除了標準輸出 (stdout) 及目錄外,還有標準錯誤 (stderr)。
    [root@kvm8 ~]# find / -user deyu8
    /var/spool/mail/deyu8
    /usr/local/bin/garmin
    /usr/lib64/libbryton.so.1
    find: ??/proc/7636/task/7636/fd/7??: No such file or directory
    find: ??/proc/7636/task/7636/fdinfo/7??: No such file or directory
    find: ??/proc/7636/fd/8??: No such file or directory
    find: ??/proc/7636/fdinfo/8??: No such file or directory
    
  2. 建立要將檔案複製過去的目標目錄 /root/findresults。
    [root@kvm8 ~]# mkdir /root/findresults
    
  3. 使用管線命令及 xargs 將 find 命令的標準輸出一個一個送給 cp 命令做為標準輸入,複製到目標目錄 /root/findresults,標準錯誤 (stderr) 會留在螢幕上,不會送給後面命令當 stdin。
    [root@kvm8 ~]# find / -user deyu8 | xargs cp -t /root/findresults/
    find: ??/proc/7654/task/7654/fd/6??: No such file or directory
    find: ??/proc/7654/task/7654/fdinfo/6??: No such file or directory
    find: ??/proc/7654/fd/7??: No such file or directory
    find: ??/proc/7654/fdinfo/7??: No such file or directory
    
  4. 查詢目標目錄 /root/findresults 內是不是有之前找到的那些檔案?
    [root@kvm8 ~]# ll /root/findresults/
    total 388
    -rw-r-----. 1 root root      0 Dec  9 10:16 deyu8
    -rw-r--r--. 1 root root     11 Dec  9 10:16 garmin
    -rwxr-xr-x. 1 root root 391104 Dec  9 10:16 libbryton.so.1
    
  5. 如果不想看到標準錯誤 (stderr),可將其送到 /dev/null,再管線處理。
    [root@kvm8 ~]# find / -user deyu8 2> /dev/null | xargs cp -t /root/findresults/
    
  6. 使用 find 內建的 -exec 選項執行 cp 複製命令,將找到的內容複製製到 findre 目錄。
    [root@kvm8 ~]# mkdir findre
    [root@kvm8 ~]# find / -user deyu8 -exec cp {} findre \;
    find: ‘/proc/105595/task/105595/fd/7’: No such file or directory
    find: ‘/proc/105595/task/105595/fdinfo/7’: No such file or directory
    find: ‘/proc/105595/fd/8’: No such file or directory
    find: ‘/proc/105595/fdinfo/8’: No such file or directory
    [root@kvm8 ~]# ll findre
    total 336
    -rw-r-----. 1 root root      0 Dec  8 19:35 deyu8
    -rw-r--r--. 1 root root     11 Dec  8 19:35 garmin
    -rwxr-xr-x. 1 root root 339328 Dec  8 19:35 libbryton.so.1