簡體   English   中英

如何在Linux中執行文件操作(例如cp,mv,rm和chown等)時排除文件夾

[英]How do I exclude a folder when performing file operations i.e. cp, mv, rm and chown etc. in Linux

如何在執行文件操作時排除文件夾,即cp等。

我目前使用通配符*將文件操作應用於所有,但我需要排除一個單個文件夾。

我實際想要使用的命令是chown來更改目錄中所有文件的所有者,但我需要排除一個子目錄。

如果你正在使用bash並通過shopt -s extglob啟用extglob,那么你可以使用!(<pattern>)來排除給定的模式。

find dir_to_start -name dir_to_exclude -prune -o -print0 | xargs -0 chown owner

find dir_to_start -not -name "file_to_exclude"  -print0 | xargs -0 chown owner
for file in *; do
  if [ $file != "file_I_dont_want_to_chown" ]
    then
      chown -R Camsoft $file
  fi
done 

結合unix的多個小銳利工具:排除文件夾“foo”

% ls -d * | grep -v foo | xargs -d "\n" chown -R Camsoft

對於這種情況,我建議使用find。 您可以使用-not -iwhilename'PATH'指定要排除的路徑。 然后使用exec執行要執行的命令

find . -not -iwholename './var/foo*' -exec chown www-data '{}' \;

雖然這可能對您的情況有所幫助,但我也看到腳本設置了不可變標志。 確保在完成后刪除標記,以便在腳本被提前殺死的情況下使用陷阱(注意:從腳本運行,陷阱代碼在bash會話退出時運行)。 我的選擇很麻煩,但在某些情況下它很好。

cd /var
trap 'chattr -R -i foo > /dev/null 2>&1' 0
chattr -R +i foo
chown -R www-data *

另一個選項可能是臨時刪除該文件/文件夾的權限。
在Unix中,你需要'x'權限才能輸入目錄。

編輯:顯然,如果你要備份一個實時生產數據庫,這不是工作 - 但是當將文件復制到USB密鑰時排除你的“有趣圖像”集合是可以理解的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM