Find
linux下重命名文件和目錄
為什麼下面的命令“find / -name ’ node1 ’ -print0 | xargs -0 rename ’s/node1/node_STAR/’ ”不能替換/var/tmp目錄下的node1?
我的目標是掃描 linux sys 並重命名目錄和文件
來自我的 linux 機器的範例
pwd /var/tmp/Change_host_dir find / -name '*node1*' -print0 | xargs -0 /var/tmp/Change_host_dir/node1 find / -name '*node1*' -print0 | xargs -0 rename 's/node1/node_STAR/' ls node1
標準的 linux
rename
命令手冊頁說:rename 將通過將名稱中第一次出現的from替換為**to 來重命名指定的文件。
所以它只是用於簡單的文件重命名。這是 util-linux 的標準重命名,在我知道的所有 linux 系統上都可用。
我認為您可能正在嘗試使用 Larry Wall 的範例 perl rename script。如果這是您真正想要的,請在您的路徑中創建此文件:
#!/usr/bin/perl # # rename script examples from lwall: # rename 's/\.orig$//' *.orig # rename 'y/A-Z/a-z/ unless /^Make/' * # rename '$_ .= ".bad"' *.f # rename 'print "$_: "; s/foo/bar/ if <stdin> =~ /^y/i' * $op = shift; for (@ARGV) { $was = $_; eval $op; die $@ if $@; rename($was,$_) unless $was eq $_; }
使其可執行
chmod 755 rename
,並呼叫它而不是系統重命名。我用您的範例對其進行了測試,並且可以正常工作。