2014-09-23

2014-09-23

나는 이것을 몇 달 동안 쓰고 있습니다. 제가 만든 파일은 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

관련 정보