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提取来测试是否存在包含前导空格的文件或目录,如果存在,则将文件或目录移动到其名称没有前导空格。您可以自由使用 for
或 while IFS=$'\n' read -r line
循环或 find ...
来收集所有文件名并执行 test/move。满足您的需求。
注意:如果在非当前目录下操作,需要remove/addpath
组件pre/post测试为了容纳完整路径。
我怎样才能 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提取来测试是否存在包含前导空格的文件或目录,如果存在,则将文件或目录移动到其名称没有前导空格。您可以自由使用 for
或 while IFS=$'\n' read -r line
循环或 find ...
来收集所有文件名并执行 test/move。满足您的需求。
注意:如果在非当前目录下操作,需要remove/addpath
组件pre/post测试为了容纳完整路径。