我在一個名為 freesurfer 的目錄中有幾個檔案夾,例如:
freesurfer/sub-001/mri
freesurfer/sub-001/label
freesurfer/sub-001/surf
freesurfer/sub-001/stats
freesurfer/sub-002/mri
freesurfer/sub-002/label
freesurfer/sub-002/surf
freesurfer/sub-002/stats
我只想重命名“stats”檔案夾并將其移動到其他位置:
freesurfer/sub-001/mri
freesurfer/sub-001/label
freesurfer/sub-001/surf
freesurfer/sub-001/sub-001_stats
freesurfer/sub-002/mri
freesurfer/sub-002/label
freesurfer/sub-002/surf
freesurfer/sub-002/sub-002_stats
我設法撰寫了以下代碼:
while read dir ; do
new_dir=$(rev <<< "$dir" | sed 's~/~_~' | rev);
echo "mv $dir $new_dir";
done < <(find . -type d -name 'stats')
當我在 'mv' 命令之前使用 'echo' 運行上面的代碼并將檔案夾名稱附加到 'stats' 目錄前面時,上面的代碼似乎作業正常,但是當我關閉 'echo' 時,它給出了一個錯誤訊息:“沒有這樣的檔案或目錄”。我究竟做錯了什么?
uj5u.com熱心網友回復:
您要創建new_dir的代碼不正確。它正在創建freesurfer/sub-002_stats而不是freesurfer/sub-002/sub-002_stats. 但這并不能解釋您遇到的錯誤,因為它只會錯誤地重命名檔案(將它們全部移動到父目錄中)。
嘗試:
while read dir ; do
new_dir=$(dirname "$dir")/$(basename $(dirname "$dir"))_stats
mv "$dir" "$new_dir"
done < <(find . -type d -name 'stats')
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/515338.html
上一篇:如何從Jest測驗運行腳本?
