Unix - 文件名开头的空格

Unix - Whitespace at beginning of filename

我怎样才能 grep 一个以白色 space 开头的文件,然后在没有 space 的情况下重命名?顺便说一句,还有其他包含 "file1 name in it. The ls - l " File1" 的文件将显示其中包含 "File1" 名称的所有文件。

$ls -l 
drwxr-xr-x     2 root     root     1515 Apr  8 01:36   File1
drwxr-xr-x     2 root     root     1515 Apr  8 01:49  File1 
drwxr-xr-x     2 root     root     2343 Apr  8 01:54  File3 
drwxr-xr-x     2 root     root     2303 Apr  8 01:59  File4
drwxr-xr-x     2 root     root     2303 Apr  8 01:59  Another_File1

如您所见,“File1”开头有一个白色space。如何将“File1”重命名为 "Bad_File1"?

谢谢

只要引用它的名字:

mv " File1" "Bad_File1"
    ^

另请注意“File1”是一个目录:

drwxr-xr-x     2 root     root     1515 Apr  8 01:36   File1
^

所以您在 ls -l " File1" 中看到的是该目录的内容。

您可以移动名称前面有空格的目录中的所有文件或目录,前导空格类似于:

for i in *; do [ "$i" != "${i##* }" ] && mv "$i" "${i##* }"; done

它只是使用参数expansion/substring提取来测试是否存在包含前导空格的文件或目录,如果存在,则将文件或目录移动到其名称没有前导空格。您可以自由使用 forwhile IFS=$'\n' read -r line 循环或 find ... 来收集所有文件名并执行 test/move。满足您的需求。

注意:如果在非当前目录下操作,需要remove/addpath组件pre/post测试为了容纳完整路径。