我想将一些带有长文件名的文件复制到旧的Windows XP 32位FAT32系统上,并且出现文件名太长的错误。我如何递归搜索文件名大于或等于255个字符的目录,并将它们截断为适合FAT32文件系统?截断超过255个字符的文件名
1
A
回答
2
我敢肯定find
可以做到全工作,我不能完全得到最后一步,所以采用了一些bash
foo:
#/bin/bash
find . -maxdepth 1 -type f -regextype posix-extended -regex ".{255,}" |
while read filename
do
mv -n "$filename" "${filename:0:50}"
done
使用find
让所有与文件名大于或等于255个字符的文件:
find . -maxdepth 1 -type f -regextype posix-extended -regex ".{255,}"
截断这些文件名到50个字符,-n
不覆盖现有文件。
mv -n "$filename" "${filename:0:50}"
注:这可以与-exec
选项的人?
0
在这里你去:
find /path/to/base/dir -type f | \
while read filename
do
file="${filename%%.*}"
ext="${filename##*.}"
if [[ "${#file}" -gt 251 ]]; then
truncated=$(expr $file 1 251)
mv "${filename}" "${truncated}"."${ext}"
fi
done
我却不知道如何可以做到这一点,但一些简单的修改到first Google result to "unix truncate file name"足以产生上述溶液。试一试第一;)
0
你可以在一个终端与perl
做到这一点:
cd /d \path\to\dir
find . -type f |
perl -F'[/\\]' -lane '
$f = $F[-1];
($ext) = $f =~ /(\.[^.]+)$/;
delete $F[-1];
$path = join "/", @F;
if (length($f) > 255) {
$c++;
rename "$path/$f", "$path/truncated_$c$ext"
}
'
重命名的文件将看起来像:
truncated_1.ext
truncated_2.ext
(...)
相关问题
- 1. 在255个字符处截断所有文件名的命令
- 2. 数据截断为255个字符
- 3. MySQL连接对于.NET芯截断文本255个字符
- 4. 移动超过255个字符的windows文件夹路径
- 5. 从文件名中截断字符串
- 6. 截断SqlBulkCopy的文本字符255使用SqlBulkCopy的
- 7. 在255个字符处截断访问报告字段
- 8. 的Python:ZIP解压有超过255个字符的字符串
- 9. 搜索超过255个字符长的字符串在VBA WORD
- 10. Excel.Range.Find使用长度超过255个字符的字符串
- 11. 当使用FreeTDS查询MS SqlServer时,Python截断255个字符
- 12. 访问和VBA读取每行超过255个字符的文本文件
- 13. MailMerge查询字符串超过255个字符
- 14. 如何打印超过255个字符的数组? (VBA字)
- 15. 填写超过255个字符的单词表单字段
- 16. delphi'string'文字怎么能超过255?
- 17. 如何缓存超过255个字符的路径并读取文件属性?
- 18. DBF文件名截断
- 19. 打到宽字符后截断文件
- 20. 如何检索长度超过255个字符的range.address?
- 21. 截断一个文件名 - 扩展
- 22. x个字符后截断字符串
- 23. 自动截断超过目标字符串大小的源字符串
- 24. 让Hawtio在JMS消息中显示超过255个字符
- 25. RWDBReader无法读取超过255个字符
- 26. 实体@Column长度超过255个字符
- 27. PHP到Excel,不允许超过255个字符?
- 28. 如何在MySQL数据库中存储超过255个字符?
- 29. 访问令牌是否可以超过255个字符?
- 30. 如何限制访问字符数超过255个