我想编写一个 Posix shell 脚本函数,该函数将匹配需要扩展的空格和通配符 (*?) 的模式。在 Python 中,glob.glob('/tmp/hello world*')将返回正确的列表。我如何在 shell 中执行此操作?
#!/bin/sh
## this function will list
## all of the files in the /tmp
## directory that match pattern
f() {
PATTERN="$1"
ls -1 "/tmp/$PATTERN"
}
touch '/tmp/hello world {1,2,3}.txt'
f 'hello world*'
Run Code Online (Sandbox Code Playgroud) 我在 WordPress 中创建了一个函数,我希望在其中获取给定目录中的所有图像,为此我使用了 PHP glob 函数,由于某种原因我无法使其正常工作,是否禁用了 glob() 函数以供在其中使用WordPress?
无效的代码...
function getAccreditaionLogos(){
define('ACCREDPATH', get_stylesheet_directory_uri() . '/img/accreditations/');
$images = glob(ACCREDPATH . '*.png');
foreach($images as $key => $img):
$get_icons = '<li><img src="'.$img.'" /></li>';
echo $get_icons;
endforeach;
}
Run Code Online (Sandbox Code Playgroud) 我在 shell 脚本中有一行如下所示:
java -jar "$dir/"*.jar
Run Code Online (Sandbox Code Playgroud)
,因为我只想执行该文件夹中碰巧命名的任何 jar 文件。但这并不像我预期的那样工作。我收到错误消息:
Error: Unable to access jarfile [folder-name]/*.jar
Run Code Online (Sandbox Code Playgroud)
它按字面意思使用“*”字符,而不是进行我想要的替换。我该如何解决?
编辑:它现在正在工作。我只是有错误的文件夹前缀:/对于任何想知道的人,这是正确的方法。
当我执行以下操作时:
rmdir /path/to/dir/*.lproj
Run Code Online (Sandbox Code Playgroud)
它工作正常。
当我做:
APP_RESOURCES="/path/to/dir"
rmdir "$APP_RESOURCES/*.lproj"
Run Code Online (Sandbox Code Playgroud)
它不起作用并说它实际上是在寻找一个以星号符号命名的目录。通配符不会被解释。如何使这在报价中起作用?
所以我想在我的项目中找到 NLog 的使用,我使用 git grep 来为我做,但它发现了比我需要的更多的案例:
git grep NLog
GETA.Seo.Sitemap/Geta.SEO.Sitemaps.csproj: <Reference Include="NLog, Version=2.1.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
GETA.Seo.Sitemap/Geta.SEO.Sitemaps.csproj: <HintPath>..\packages\NLog.2.1.0\lib\net45\NLog.dll</HintPath>
GETA.Seo.Sitemap/Services/CloudinaryService.cs: NLogger.Exception("Could not transform image", exception);
GETA.Seo.Sitemap/Services/CloudinaryService.cs: NLogger.Warn("Url for cloudinary id was null");
GETA.Seo.Sitemap/Services/CloudinaryService.cs: NLogger.Warn("Could not locate file object for cloudinary id in EpiServer");
....
etc
Run Code Online (Sandbox Code Playgroud)
当然,它找到了我要找的东西,但我想过滤到只以.cs. 所以我尝试这样做:
git grep NLog **/*.cs
Web/Global.asax.cs: NLogger.Info("Meny application start");
Run Code Online (Sandbox Code Playgroud)
只是一击,我上面的两场比赛都没有列出。我发现这很奇怪,我可能误解了 git grep 的通配匹配。有人可以启发我吗?
这应该有效,但没有,并给出以下错误(如下)。
我在这里和这里阅读了几篇关于 stackoverflow 的帖子,但在这种情况下似乎没有一个好的答案。我真的希望我只是错过了一些愚蠢的东西,我已经在这里呆了几个小时了,所以请不要介意我的咆哮,但我需要发泄一下。
由于 ansible 2.3.0 无法仅在远程主机上执行复制/移动/重命名文件这样简单的操作,我的意思是谁会想要这样做?而且它也不能作用于 globs (*)(比如当你不知道要作用于哪些文件时),两步方法似乎是(我知道的)移动某些文件的唯一方法(仅在远程主机)。但即使这样也行不通。
---
- hosts: RedHat
become: true
become_user: root
become_method: sudo
vars:
repo_dir: /etc/yum.repos.d
tasks:
- name: create directory
file: path=/etc/yum.repos.d/bak/ state=directory
- name: get repo files
shell: "ls {{ repo_dir }}/*.repo"
register: repo_list
- debug: var=repo_list.stdout_lines
- name: move repo files
command: "/bin/mv -f {{ item }} bak"
args:
chdir: "{{repo_dir}}"
with_items: repo_list.stdout_lines
#################################
TASK [get repo files]
**********************************************************************
changed: [myhost]
TASK [debug]
**********************************************************************
ok: …Run Code Online (Sandbox Code Playgroud) 使用Prettier格式化 js 代码。Prettier似乎在幕后使用globby。
我尝试了以下方法:
$ prettier './**/*.{js, css}' '!assets/**'
$ prettier './**/*.{js, css}' '!(assets/**)'
$ prettier './**/*.{js, css}' '!assets/**/*.*'
$ prettier './**/*.{js, css}' '!(assets/**/*.*)'
$ prettier './**/*.{js, css}' 'assets/**/!*.*'
Run Code Online (Sandbox Code Playgroud)
在所有情况下,文件assets夹中的文件都包含在内。
这样做的正确方法是什么?
我有一个名为 的allfiles文件夹,该文件夹中有一些文件,例如
1212-how-to-sddk-thosd.html
3454-go-to-dlkkl-sdf.html
0987-sfda-asf-fdf-12331.html
4789-how-to-fdaaf-65536.html
Run Code Online (Sandbox Code Playgroud)
我以前是scandir用来列出所有文件的,现在我需要通过关键字来查找文件,exampleto-dlkkl是关键字,我会得到文件3454-go-to-dlkkl-sdf.html。
Glob 似乎不起作用,并且 opendir 和 readdir 不起作用,有什么想法吗?
我有一个JanuaryDataSentToResourcePro包含多个 .xlsx 文件的文件夹。我想遍历文件夹并将它们全部转换为 .csv 并保持相同的文件名。
为此,我正在尝试实现 glob,但出现错误: TypeError: 'module' object is not callable
import glob
excel_files = glob('*xlsx*')
for excel in excel_files:
out = excel.split('.')[0]+'.csv'
df = pd.read_excel(r'''C:\Users\username\Documents\TestFolder\JanuaryDataSentToResourcePro\ResourceProDailyDataset_01_01_2018.xlsx''', 'ResourceProDailyDataset')
df.to_csv(out)
Run Code Online (Sandbox Code Playgroud)
我是python的新手。看起来对吗?
更新:
import pandas as pd
import glob
excel_files = glob.glob("*.xlsx")
for excel in excel_files:
out = excel.split('.')[0]+'.csv'
df = pd.read_excel(excel, 'ResourceProDailyDataset')
df.to_csv(out)
Run Code Online (Sandbox Code Playgroud)
但仍然没有将 convert .xlsx 转换为 .csv
我正在尝试编写一个 Python 脚本,该脚本在文件夹中搜索带有.txt扩展名的所有文件。在手册中,我只看到它硬编码到glob.glob("hardcoded path").
如何使 glob 搜索模式的目录成为变量?具体来说:用户输入。
这是我尝试过的:
import glob
input_directory = input("Please specify input folder: ")
txt_files = glob.glob(input_directory+"*.txt")
print(txt_files)
Run Code Online (Sandbox Code Playgroud)
尽管为.txt文件提供了正确的目录,脚本还是打印了一个空列表[ ]。