相关疑难解决方法(0)

如何使OS X上的"find"命令默认为当前目录?

我是一个沉重的命令行用户,并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函数,如果我忘了就添加"./",但是我失败了.谢谢你的帮助.:)

macos bash command-line find

14
推荐指数
3
解决办法
1万
查看次数

mv 一个包含来自 shell 脚本的空格的文件

我正在尝试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)

linux shell mv

5
推荐指数
1
解决办法
2万
查看次数

git clone成功,但签出失败;由于文件夹具有前导或尾随空格

我通常从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中的所有前导或尾随空格,甚至更好:出于兼容性目的而拒绝它们?

windows git macos

2
推荐指数
1
解决办法
2144
查看次数

有人可以解释一下这个有效的 Bash 代码吗?

Naidim 回答了这个问题: 如何使用 bash 脚本替换文件名中的空格

这是我能为我工作的唯一答案,但我不明白我在看什么。

for f in *\ *; do mv "$f" "${f// /_}"; done
Run Code Online (Sandbox Code Playgroud)
  1. 我不知道 for 循环会使用这种基本语法搜索所有文件。
  2. 我看到了 mv 语句,但是那个命令扩展是什么?

bash whitespace replace

0
推荐指数
1
解决办法
50
查看次数

标签 统计

bash ×2

macos ×2

command-line ×1

find ×1

git ×1

linux ×1

mv ×1

replace ×1

shell ×1

whitespace ×1

windows ×1