我是一个沉重的命令行用户,并find在我的构建系统脚本中广泛使用该命令.但是在Mac OS X上,当我不专注时,我经常得到这样的输出:
$ find -name \*.plist
find: illegal option -- n
find: illegal option -- a
find: illegal option -- m
find: illegal option -- e
find: *.plist: No such file or directory
Run Code Online (Sandbox Code Playgroud)
基本上,我忘了添加小点:
$ find . -name \*.plist
Run Code Online (Sandbox Code Playgroud)
因为BSD find需要路径而GNU find不需要(如果你没有指定,则它假设当前目录).我经常同时使用Linux,Mac OS X和Cygwin,因此让我的所有工具表现相同对我有很大好处.我试着编写一个bash find函数,如果我忘了就添加"./",但是我失败了.谢谢你的帮助.:)
我正在尝试mv一个文件(重命名它以用破折号替换空格)。如果我传递不带引号的 source 和 dest 参数,则源会被分解,因为mv认为它是参数的结尾。
如果我用参数包围 source 和 dest, mv 报告找不到源。目前,$1 和 $2 在开头和结尾都有硬编码的报价。$onam 和 $dnam 是没有硬编码引号的等价物。
提示中的这个命令非常有效,因为 source 和 dest 被引号包围:
mv "/home/bryan/renametest/TestFolder/test file" "/home/bryan/renametest/TestFolder/test---file"
Run Code Online (Sandbox Code Playgroud)
这是我迄今为止尝试过的(输入和结果)
mv $1 $2
mv: cannot stat `"/home/bryan/renametest/TestFolder/test file"'
No such file or directory
mv $onam $dnam
mv: cannot move `/home/bryan/renametest/TestFolder' to a subdirectory of itself,
`/home/bryan/renametest/TestFolder/test---file'
mv $1 $dnam
mv: cannot stat `"/home/bryan/renametest/TestFolder/test file"':
No such file or directory
mv $onam $2
mv: cannot move `/home/bryan/renametest/TestFolder' to `"/home/bryan/renametest/TestFolder/test---file"':
No …Run Code Online (Sandbox Code Playgroud) 我通常从macOS提交一个项目,但我没有注意到前导和尾随空格意外地嵌入了文件夹名称,但是最近我尝试从Windows克隆存储库,但出现此错误:
fatal: cannot create directory at 'FolderName /SubFolderName'
warning: Clone succeeded, but checkout failed.
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以从Windows成功检出而不用从Mac进行修改?如何防止导致Windows检出失败的前导空格和尾随空格?有没有一种方法可以强制Finder突出显示macOS中的所有前导或尾随空格,甚至更好:出于兼容性目的而拒绝它们?
Naidim 回答了这个问题: 如何使用 bash 脚本替换文件名中的空格
这是我能为我工作的唯一答案,但我不明白我在看什么。
for f in *\ *; do mv "$f" "${f// /_}"; done
Run Code Online (Sandbox Code Playgroud)