我在 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} ..."