Symlink
關於符號連結和複製的問題
因此,以下命令從
/source/allsubdirectroies
(/usr/hdp/2.6.3.0-235
) 複製到/target
(/tmp/jar263
) 文件夾:find /usr/hdp/2.6.3.0-235 -type f -name "*.jar" -exec cp {} /tmp/jar263 \;
我的問題是在源目錄中有符號連結的文件,即:hadoop-nfs.jar -> hadoop-nfs-2.7.3.2.6.3.0-235.jar
因此,當我檢查我
/tmp/jar263
的文件夾時,我會看到以下文件:hadoop-nfs-2.7.3.2.6.3.0-235.jar
但是我想要的是“hadoop-nfs.jar”名稱。
有什麼方法可以獲取連結名稱而不是文件的原始名稱?
usr/hdp/2.6.3.0-235/
文件夾/子文件夾結構中有許多連結。
從
man find
,ubuntu 手冊頁版本:-L 跟隨符號連結。當 find 檢查或列印有關文件的資訊時,所使用的資訊應來自連結指向的文件的屬性,而不是來自連結本身(除非它是斷開的符號連結或 find 無法檢查所指向的文件)連結點)。使用此選項意味著 -noleaf。如果您稍後使用 -P 選項,-noleaf 仍將有效。如果 -L 有效並且 find 在其搜尋過程中發現了指向子目錄的符號連結,則將搜尋符號連結指向的子目錄。
當 -L 選項生效時,-type 謂詞將始終與符號連結指向的文件類型而不是連結本身匹配(除非符號連結被破壞)。使用 -L 會導致 -lname 和 -ilname 謂詞始終返回 false。
所以
find -L /usr/hdp/2.6.3.0-235 -type f -name "*.jar" -exec cp {} /tmp/jar263 \;
應該做的伎倆。確保閱讀**-type**下的選項,如 roaima 建議的那樣,如果您遇到任何奇怪的行為(find 的行為可能略有不同,例如 OSX)。