我需要检测并删除文件夹中的许多前导空格。
我尝试一些代码,如:
find /home/account -depth -name " *" -exec sh -c 'f="{}"; mv -v "$f" "...."' \;
但是我找不到任何代码来删除文件名或文件夹中的前导空格。
我需要:
mv "/home/account/folder/ folder 1" "/home/account/folder/folder 1"
(因为我使用查找,并使其检测子文件夹的前导空格)
我如何用上面提到的代码删除那些前导空格?任何建议都会有所帮助。顺便说一句,我正在使用centos 7。
尝试一下:
find /home/account -depth -name "* " | sed "s/\/ /\//g"
您可以使用bash替换来提取文件名,并消除前导空格。
小注:模式-name "* "
查找带有尾随空格的文件。如果您要寻找用于前导空格的过滤器,请使用-name " *"
或-name "* * "
以外的任何空格。示例代码使用前导空格模式。您可以根据需要调整样式和sed。
find /home/account -depth -name " *" | while read fn ; do
d=${fn%/*}
b=$(echo ${fn##*/} | sed -e 's/^ *//')
mv "$fn" "$d/$b"
done
使用重命名
-名称“ *”:匹配名称中带有尾随空格的文件名
重命名's / // gi':用空格替换或不带空格
查找。 -depth -name“ *” |重命名's / // gi'
-name "* "
匹配名称中具有trailing空格的文件名。我在下面对此进行了修复,并使用-execdir
使其更易于使用参数扩展来删除前导空间。
find /home/account -depth -name ' *' -execdir sh -c '
for f; do
mv -v "$f" "${f#./[[:space:]]}"
done' _ {} +
对于空运行,在mv
之前加echo
。