나는 이것을 몇 달 동안 쓰고 있습니다. 제가 만든 파일은 2011-06-13.markdown
일일컨텐츠 같은 이름의 날짜 파일입니다 . 모든 것을 파일에 기록하기로 결정했지만 항목을 날짜 헤더(파일 이름)와 함께 시간순으로 정렬하고 싶습니다. 이는 다음 세 가지 파일에 대한 별도의 파일이 포함된 디렉터리를 원한다는 의미입니다.
2014-09-21.markdown
내가 쓴 이 말들을 보세요!
2014-09-22.markdown
이건 제가 가지고 있는 심각한 글쓰기 습관이에요!
2014-09-23.markdown
stackexchange에 대한 질문이 있습니다. 젠장, 이것은 유용한 커뮤니티입니다!
결국 다음과 같은 파일처럼 보입니다.
writing.markdown
2014-09-23
stackexchange에 대한 질문이 있습니다. 젠장, 이것은 유용한 커뮤니티입니다!
2014-09-22
이건 제가 가지고 있는 심각한 글쓰기 습관이에요!
2014-09-21
내가 쓴 이 말들을 보세요!
모든 파일은 하나의 디렉토리에 있으며 이름이 올바르게 지정되었습니다. 나는 find
와 의 어떤 조합이 나를 도울 수 있다고 생각 cat
하지만 정확히 어떻게 도움이 될지는 잘 모르겠습니다.
답변1
$file
단일 파일(지금은 이를 호출함)을 사용하여 원하는 작업을 수행하고 이를 표준 출력으로 인쇄하는 방법은 다음과 같습니다.
# prepend a "# " and remove the .markdown from the filename
sed 's/\.markdown//' <<< "# $file"
# print a blank line
echo
# output the file
cat "$file"
이제 실제로 원하는 것을 루프에 포함하여 for
디렉터리의 각 마크다운을 반복합니다. 그런 다음 결과를 파일로 출력합니다.
for file in *.markdown; do
# prepend a "# " and remove the .markdown from the filename
sed 's/\.markdown//' <<< "# $file"
# print a blank line
echo
# output the file
cat "$file"
# separate the files with another blank line
echo
done > writing.markdown
편집: 잠깐만요, 그건 당신이 원하는 게 아니거든요! 순서를 바꾸려면 find
명령을 사용하여 모든 Markdown 파일을 찾은 다음 출력을 파이프하여 sort -r
원하는 역순 정렬을 얻을 수 있습니다. 마지막으로 그것을 입력 read
하고 반복하십시오. 또한 파일 이름 대신 경로가 반환되므로 basename
파일 이름에서 날짜를 추출할 때 이를 호출 해야 합니다 .find
find -name '*.markdown' -not -name 'writing.markdown' | sort -r | while read file; do
# prepend a "# " and remove the .markdown from the filename
sed 's/\.markdown//' <<< "# $(basename $file)"
# print a blank line
echo
# output the file
cat "$file"
# separate the files with another blank line
echo
done > writing.markdown
Google에서 검색하기가 정말 어렵기 때문에 일부 문서에 대한 링크를 포함했습니다.여기 문자열이 있습니다당신이 그들에 익숙하지 않은 경우.
답변2
이런 식으로 시도해 볼 수 있습니다. 귀하가 제공한 정확한 내용을 sample1
, sample2
, 및 3개의 텍스트 파일에 작성했습니다 . sample3
이 명령을 입력하면:
cat sample1 sample2 sample3 >> sample4
다음을 수행하면 다음과 같은 결과가 나타납니다 cat sample4
.
2014-09-23
Asked question on stackexchange. Damn that is a helpful community!
2014-09-22.markdown
That's one serious writing habit I have!
2014-09-21.markdown
Look at all these words I've written!
>>
에 첨부되며 sample4
, 사용할 때마다 하나씩 덮어쓰여집니다 >
. sample4
따라서 귀하의 경우에는 다음 명령을 사용할 수 있습니다.
cat 2014-09-23.markdown 2014-09-22.markdown 2014-09-21.markdown >> writing.markdown