![您能将文件名无效的文件复制到 ntfs 并自动更改名称吗?](https://linux22.com/image/1013510/%E6%82%A8%E8%83%BD%E5%B0%86%E6%96%87%E4%BB%B6%E5%90%8D%E6%97%A0%E6%95%88%E7%9A%84%E6%96%87%E4%BB%B6%E5%A4%8D%E5%88%B6%E5%88%B0%20ntfs%20%E5%B9%B6%E8%87%AA%E5%8A%A8%E6%9B%B4%E6%94%B9%E5%90%8D%E7%A7%B0%E5%90%97%EF%BC%9F.png)
我在 ext4 磁盘上的许多文件夹中存放了大量文件。其中一些文件包含 ntfs 中的非法字符(如:
或|
),因此当我尝试复制这些文件以在 Windows 中查看时会出错。
是否有任何工具可以让我复制文件并根据需要更改名称,还是我需要自己编写?
答案1
检查这个答案: https://superuser.com/questions/178025/linux-copy-to-fat32-filesystem-invalid-argument
简而言之,安装pax
:
sudo apt install pax
现在不用这样做:
cp -r sourcedir destdir
要复制目录树,您可以运行:
pax -rw -s '/[*?:]/_/gp' sourcedir destdir
这样pax
就可以改名仅在必要时复制文件。
每个*
或?
或:
字符将自动替换为一个_
字符。这意味着多个文件可能会获得相同的新名称。
答案2
原始版本,CLI,一行程序
如果您在源目录中...
for a in *; cp -r "${a}" "/path/to/destination/$(echo ${a} | sed 's/[*?:]/_/g')"; done
为了取得进展,您可以在 for-do 循环中添加此行:
echo Copying "${a} ..."