Har*_*vey 24 linux bash command-line
我正在寻找类似的东西:
ls | ask_yes_no_for_each_file | chmod +x the_files_approved
Run Code Online (Sandbox Code Playgroud)
或类似的语法。
也可以处理您想要单独确认的其他命令。
Joh*_*024 45
这可以满足您的要求:
find . -maxdepth 1 -type f -print0 | xargs -L1 -p0 chmod +x
Run Code Online (Sandbox Code Playgroud)
这使用find而不是ls因为通常解析ls输出是不可靠的。find但是,即使文件名包含换行符或其他困难字符,这种形式也可以使用 。
解释
find . -maxdepth 1 -type f -print0
这将选择文件。这可以使用 find 的许多选项中的任何一个进行自定义。该选项print0告诉find在空分隔列表中打印文件名。这是传输文件名列表的唯一可靠方法。
xargs -L1 -p0 chmod +x
这需要由生成的文件名的空分隔列表find并将您的命令应用于它们。
该-L1选项告诉xargs您一次只处理一个文件名。该-p选项告诉xargs在继续之前提示批准。该-0选项告诉xargs使用空字符作为文件名之间的分隔符。
[在@kwan 指出之前,我不知道该-p选项xargs。]
小智 25
您可以使用xargs.
例如:
ls|xargs -I path -p chmod +x path
Run Code Online (Sandbox Code Playgroud)
选项-p: 提示用户是否运行每个命令行并从终端读取一行。仅当响应以“y”或“Y”开头时才运行命令行。
| 归档时间: |
|
| 查看次数: |
1956 次 |
| 最近记录: |