NTFS目錄在bash shell中打開。什麼命令將遞歸地截斷目錄中的所有文件名到ext3所需的255個字符限制?在255個字符處截斷所有文件名的命令
0
A
回答
1
如果你有機會到Windows外殼,您可以使用:
@echo off
setlocal EnableDelayedExpansion
REM loop over all files in the cwd
for /f %%a in ('dir /a-d /b') do (
REM store this filename in a variable so we can do substringing
set ThisFileName=%%a
REM now take a substring
set ThisShortFileName=!ThisFileName:~0,255!
REM finally, the rename:
echo ren %%a !ThisShortFileName!
)
:EOF
endlocal
(注:我重命名命令之前增加了迴音,所以您可以直觀地驗證它之前的實際工作運行它。工作對我的箱子。)
我敢肯定有人誰是在* nix盒可馬上作出的bash一個類似的腳本,但我堅持在Windows世界:)
好運!
0
$ cat truncname
#!/bin/bash
# requires basename, dirname, and sed
mv $1 `dirname $1`/`basename $1 | sed 's/^\(.\{0,255\}\).*/\1/'`
$ chmod a+x truncname
$ find . -exec ./truncname {} \;
+0
我試過一個文件夾上運行shell腳本,並得到了以下錯誤: 提示:/媒體/ DUALOS $ SH〜/ truncname.sh東西 /home/username/truncname.sh:1:$:未找到 mv:無法將`stuff'移動到它自己的子目錄,`./stuff/stuff' /home/username/truncname.sh:5:$:not found /home/username/truncname.sh:6:$ :找不到 – 2009-05-02 23:36:24
1
假設殼坐在NTFS目錄,因爲它的PWD:
for f in *; do mv $f ${f:0:255}; done
戴夫的sed的基礎版本類似,但避免了每個文件的高管。由於最大命令行數限制,會炸燬一個真正巨大的目錄,並且不會執行子目錄。
相關問題
- 1. 截斷超過255個字符的文件名
- 2. 在255個字符處截斷訪問報告字段
- 3. 數據截斷爲255個字符
- 4. FINDSTR批處理命令截斷文件
- 5. mySQL:截斷所有表的命令
- 6. 命令截斷文件中引用的字符串?
- 7. MySQL連接對於.NET芯截斷文本255個字符
- 8. MATLAB unix命令截斷字符串
- 9. MySQL截斷命令 - 統一碼字符
- 10. 從文件名中截斷字符串
- 11. 截斷文件名稱並重命名
- 12. 截斷SqlBulkCopy的文本字符255使用SqlBulkCopy的
- 13. unix命令截斷文件內容
- 14. plink截斷命令
- 15. 當使用FreeTDS查詢MS SqlServer時,Python截斷255個字符
- 16. 如何截斷目錄中所有文件的最後兩個字符?
- 17. 在前120個字符和刷新後截斷所有內容
- 18. Shell命令,以確定文件`foo`是文件的截斷`bar`
- 19. PowerShell命令在文件名的中間插入1個字符
- 20. 截斷髮現./命令
- 21. SqlCommand()ExecuteNonQuery()截斷命令文本
- 22. shell命令截斷/剪切字符串的一部分
- 23. DBF文件名截斷
- 24. Excel中OLEDB場截斷在255
- 25. 打到寬字符後截斷文件
- 26. 截斷一個文件名 - 擴展
- 27. 訪問SQL /查詢在25個字符處截斷了字段?
- 28. grep命令字符串中的所有文件目錄與某些名稱
- 29. SELECT命令:字符串或二進制數據將被截斷
- 30. x個字符後截斷字符串
這個工作,但我不得不使文件名更短,因爲目錄計爲255個字符。 – 2009-05-21 20:27:21