Ubuntu批量操作檔案
阿新 • • 發佈:2020-07-25
1. 批量重新命名檔案為數字編號
進入所需要重新命名的資料集的資料夾,在終端執行
$ i=k; for x in ./*; do mv $x $i.mp4; let i=i+1; done # 'k' is the start number you want, such as 1 or 1000; './*' referes to all files, '*' may cause error
$ i=k; for x in */xx/*; do mv $x $i.mp4; let i=i+1; done # rename all files in directory 'xx' of each folder of current directory
若檔名等處有空格字元,在terminal中要輸入完整檔名時要用‘\ '表示空格' ',即要轉義,否則將表示兩個引數;並且檔名最好用ls看一下,得到的才是真正的,如檔案管理器中看到檔名為Down load,用ls看到檔名為’Down load’,因為Terminal中空格作為有含義的字元需要轉譯
若檔名裡面含有空格等,又希望用命令操作檔案,可以使用IFS(Internal Field Seprator) ,內部域分隔符變數,值預設是 space, tab, newline ,用於拆解讀入的變數,對command中的特殊字元進行處理,最後重新組合賦值給該變數。只需要重置該變數,用完以後記得還原變數。
$ IFS_old=$IFS
$ IFS=$'\n'
$ i=k; for x in ./*; do mv $x $i.mp4; let i=i+1; done
$ IFS=$IFS_old
2. 修改所有檔案的所有者
$ (sudo) chown user ./* # use sudo if the original owner is root